Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Variablen an Funktion übergeben

Variablen an Funktion übergeben
13.01.2021 18:11:28
M.G.
Hallo zusammen,
bin nach 20 Jahren wieder dran mich etwas in VBA/Excel hinein zu fuchsen.
Seitdem aber durch C++ versaut worden
Ich würde gerne eine Funktion/Sub erstellen, in das mindestens 2, besser 3 Variablen von der Routine übergeben werden
In dem Fall (7, 21, 10)
Und dann ganz am Ende den Integer letzter in das Hauptprogramm zurückübergibt.
Help :)
Dankeschön für Rat.
Aufrufen der Funktion/des Unterprogramms mit Übergabe der drei Variablen
Return von letzter an das Hauptprogramm.
For letzter= 7 To 21
If Cells(letzter, 10).Value = "" Then
letzter = letzter - 1
'MsgBox letzter
Exit For
End If
Next letzter
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Variablen an Funktion übergeben
13.01.2021 18:15:00
onur
Erzähl lieber, was GENAU die Funktio berechnen soll.
AW: Variablen an Funktion übergeben
13.01.2021 18:21:20
M.G.
Einfach in einem über die drei Variablen (x1,y und x2) zählen.
Sobald das Feld leer ist (ggf mache ich auch noch eine Prüfung des Folgefelds), dann ist der letzte Wert gefunden und soll ausgegeben werden.
Damit arbeiten dann weitere for Schleifen, die sonst alles ausfüllen.
Und ja es gibt mehrere Subsegmente
Anzeige
AW: Variablen an Funktion übergeben
13.01.2021 18:40:45
onur
Das in ein allg. Modul kopieren
Public Function Letzter(rng As Range) As Long 'rng ist der zu durchsuchende Bereich
Dim cell
For Each cell In rng
If cell = "" Then
letzter = cell.Row - 1
Exit Function
End If
Next
End Function

Aufruf: (z.B.) ZeileVonLetztemWert= Letzter(Range("B8:B50))
Du kannst sie auch in Excel als Formel benutzen:
=Letzter(B8:B14)
Anzeige
AW: Variablen an Funktion übergeben
14.01.2021 07:11:34
M.G
Dankeschön,
also muss vorher der Bereich selectiert werden....?
Ist letzter denn global, dass ich mit dem Wert dann weiterarbeiten kann?
Dankeschön
AW: Variablen an Funktion übergeben
14.01.2021 12:01:12
onur
1) Es muss gar nix selektiert werden, du musst nur einen Wert (den Bereich) übergeben statt zwei (7 UND 21).
2) Global ist es insoweit, dass es jedesmal neu berechnet wird, wenn du es brauchst - z.B. mit
IF Letzter(Range("A7:A21)"))=15 Then
.
3) Mit ZWEI Werten alleine würde VBA sowiesi nix anfangen können. - Zeile 7 bis Zeile 21, aber welche Spalte denn? Das muss jeder Code wissen, es sei denn, er arbeitet immer nur (z.B.) mit der Spalte A.
Anzeige
AW: Variablen an Funktion übergeben
14.01.2021 11:14:59
Daniel
HI
bespielsweise so:
Function MGspecial(X1, X2, optional X3)
MGspecial = letzter
End Function
im Hauptprogramm:
Ergebnis = MGspecial(7, 21, 10)
mit der Funktion IsMissung(X3) kannst du überprüfen, ob die Variable X3 angegeben wurde.
ansonsten, wenn du eine Funktion brauchst, der du eine Variable Anzahl an Parametern übergeben kannst, verwende ParamArray.
Function test(ParamArray X() As Variant)

X ist dann ein eindimensionales Array, welches die übergebenen Werte enthält, Größe kann variieren (ggf gibt es ein oberes Limit)
Gruß Daniel
Anzeige
AW: Variablen an Funktion übergeben
18.01.2021 07:23:03
M.G.
Dankeschön :)
Habe es erstmal mit globalen Variablen gelöst, werde deine Lösung aber sicher an der ein oder anderen Stelle einbauen.
Grüße Martin
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Variablen an Funktion übergeben in Excel VBA


Schritt-für-Schritt-Anleitung

Um eine Funktion in VBA zu erstellen, die mehrere Variablen übergibt und einen Wert zurückgibt, kannst du folgende Schritte befolgen:

  1. Öffne den Visual Basic for Applications (VBA) Editor:

    • Drücke ALT + F11 in Excel.
  2. Erstelle ein neues Modul:

    • Klicke auf Einfügen > Modul.
  3. Schreibe die Funktion: Füge den folgenden Code in das Modul ein:

    Public Function Letzter(rng As Range) As Long
       Dim cell As Range
       For Each cell In rng
           If cell.Value = "" Then
               Letzter = cell.Row - 1
               Exit Function
           End If
       Next cell
    End Function
  4. Rufe die Funktion auf:

    • Du kannst die Funktion in einer Zelle aufrufen, z.B.:
      =Letzter(B8:B14)

Häufige Fehler und Lösungen

  • Fehler: Funktion gibt nicht den erwarteten Wert zurück:

    • Stelle sicher, dass der übergebene Bereich korrekt ist und dass die Zellen in diesem Bereich tatsächlich Werte enthalten.
  • Fehler: „Typ nicht übereinstimmend“:

    • Überprüfe, ob du den richtigen Datentyp übergibst. Die Funktion erwartet einen Range.
  • Fehler: Leere Zellen werden nicht erkannt:

    • Achte darauf, dass du die richtige Bedingung verwendest, um leere Zellen zu erkennen.

Alternative Methoden

Du kannst auch ParamArray verwenden, um eine variable Anzahl von Parametern zu übergeben. Hier ist ein Beispiel:

Function MGspecial(ParamArray X() As Variant) As Long
    Dim letzter As Long
    ' Hier kannst du die Logik implementieren, um mit den Parametern zu arbeiten
    MGspecial = letzter
End Function

Aufruf im Hauptprogramm:

Ergebnis = MGspecial(7, 21, 10)

Praktische Beispiele

Hier ist ein einfaches Beispiel, wie du die Funktion in einem Excel-Arbeitsblatt verwenden kannst:

  • Angenommen, du hast Werte in den Zellen B8 bis B14. Du möchtest die letzte Zeile finden, die einen Wert hat. Verwende einfach die folgende Formel:
=Letzter(B8:B14)

Das Ergebnis zeigt die letzte Zeile an, die einen Wert enthält.


Tipps für Profis

  • Globale Variablen: Wenn du mit globalen Variablen arbeitest, stelle sicher, dass du sie im richtigen Kontext deklarierst, um unerwartete Fehler zu vermeiden.

  • Fehlerbehandlung: Implementiere eine Fehlerbehandlung in deinen Funktionen, um mögliche Laufzeitfehler abzufangen.

  • Dokumentation: Halte deinen Code gut dokumentiert, damit du und andere Nutzer den Zweck der Funktionen schnell verstehen können.


FAQ: Häufige Fragen

1. Muss ich den Bereich selektieren, bevor ich die Funktion aufrufe?
Nein, du musst nur den Bereich übergeben, ohne ihn vorher zu selektieren.

2. Ist die Variable letzter global?
Die Variable letzter wird jedes Mal neu berechnet, wenn du die Funktion aufrufst, daher ist sie nicht global im klassischen Sinne, sondern wird lokal innerhalb der Funktion verwendet.

3. Wie kann ich überprüfen, ob ein optionaler Parameter übergeben wurde?
Du kannst die Funktion IsMissing(X3) verwenden, um zu überprüfen, ob der optionale Parameter X3 angegeben wurde.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige