meine Frage mag "blöd" sein, aber Trotzdem: kann eine Funktion mehrere Rückgabewerte liefern?
Wenn ich z.B. in einer Funktion mehrere Variablen berechne, kann ich die irgendwie alle zurückgeben?
Gruß
Alex
Verwendung von Subroutinen: In VBA kannst Du eine Sub erstellen, die mehrere Werte zurückgibt. Definiere die Variablen, die Du zurückgeben möchtest, und übergebe sie per ByRef. Beispiel:
Public Sub test5()
Dim a As Integer, b As Integer, c As Integer
Call test6(a, b, c)
MsgBox a
MsgBox b
MsgBox c
End Sub
Public Sub test6(ByRef x As Integer, ByRef y As Integer, ByVal z As Integer)
x = 1
y = 2
z = 3
End Sub
Verwendung von Arrays: Wenn Du eine VBA-Funktion mit mehreren Rückgabewerten benötigst, kannst Du auch ein Array verwenden. Definiere das Array und gib es als Rückgabewert zurück:
Public Function GetValues() As Variant
Dim values(1 To 3) As Integer
values(1) = 1
values(2) = 2
values(3) = 3
GetValues = values
End Function
Aufruf der Funktion: Um die Werte zu erhalten, kannst Du die Funktion wie folgt aufrufen:
Dim result As Variant
result = GetValues()
MsgBox result(1) ' Gibt 1 zurück
Fehler: Rückgabewert nicht angezeigt: Wenn Du eine VBA-Funktion ohne Rückgabewert verwendest, stelle sicher, dass Du die Werte korrekt über ByRef übergibst. Ansonsten bleibt der Rückgabewert leer.
Fehler: Array Rückgabewert funktioniert nicht: Achte darauf, dass Du das Array korrekt definierst und zurückgibst. Verwende Variant als Datentyp für die Rückgabe der Funktion.
VBA Sub mit Rückgabewert: Eine einfache Methode zur Rückgabe mehrerer Werte besteht darin, eine Sub zu verwenden, die Werte über ByRef übergibt.
Excel SVERWEIS mehrere Werte zurückgeben: Wenn Du mehrere Werte aus einer Tabelle zurückgeben möchtest, kannst Du auch die Funktion SVERWEIS in Kombination mit INDEX und VERGLEICH nutzen.
Beispiel für eine Sub mit mehreren Rückgabewerten:
Public Sub CalculateValues()
Dim sum As Integer, product As Integer
CalculateMath 5, 10, sum, product
MsgBox "Summe: " & sum & ", Produkt: " & product
End Sub
Public Sub CalculateMath(ByRef a As Integer, ByRef b As Integer, ByRef s As Integer, ByRef p As Integer)
s = a + b
p = a * b
End Sub
Beispiel für eine Funktion, die ein Array zurückgibt:
Public Function GetStatistics() As Variant
Dim stats(1 To 2) As Double
stats(1) = 75.5 ' Durchschnitt
stats(2) = 100 ' Höchstwert
GetStatistics = stats
End Function
Verwendung von ByVal und ByRef: Denke daran, dass ByRef die Variablen direkt verändert, während ByVal eine Kopie übergibt. Nutze dies strategisch, um die gewünschten Ergebnisse zu erzielen.
Array-Dimensionen klar definieren: Achte darauf, dass Du die Dimensionen des Arrays korrekt definierst, um Laufzeitfehler zu vermeiden.
1. Kann eine Funktion mehrere Rückgabewerte in Excel VBA liefern?
Ja, das ist möglich, indem Du entweder ein Array zurückgibst oder Werte über ByRef in einer Sub übergibst.
2. Wie kann ich mehrere Werte mit SVERWEIS zurückgeben?
Du kannst mehrere Werte zurückgeben, indem Du SVERWEIS in Kombination mit anderen Funktionen wie INDEX und VERGLEICH verwendest.