Rückgabewert in VBA Sub und Funktionen
Schritt-für-Schritt-Anleitung
Um in VBA einen Rückgabewert von einem Sub zu erhalten, solltest Du stattdessen eine Function verwenden. Hier sind die Schritte:
-
Erstelle eine Funktion: Definiere eine Function, die den gewünschten Rückgabewert bietet.
Private Function rechnen(Zahl As Integer) As Integer
rechnen = Zahl * 2
End Function
-
Rufe die Funktion im Sub auf: Verwende die Funktion innerhalb Deines Sub, um den Wert zu erhalten.
Sub x()
Dim a As Integer, b As Integer
b = 28
a = rechnen(b) + 25 ' Aufruf der Funktion
MsgBox a
End Sub
-
Parameterübergabe: Stelle sicher, dass die übergebenen Parameter den Datentypen und der Reihenfolge entsprechen, die in der Funktion definiert sind.
Häufige Fehler und Lösungen
-
Fehler: "Sub kann keinen Rückgabewert haben"
Lösung: Verwende eine Function anstelle eines Sub. Sub in VBA kann keine Rückgabewerte zurückgeben.
-
Fehler: "Datentypen stimmen nicht überein"
Lösung: Überprüfe die Datentypen der Variablen und Parameter, um sicherzustellen, dass sie übereinstimmen.
Alternative Methoden
Eine weitere Methode, um Werte zwischen Sub und Function zu übergeben, ist die Verwendung von Public Variablen. Hier ein Beispiel, wie Du dies umsetzen kannst:
Public Ergebnis As Integer
Sub Cmd_Click()
UserForm1_Start
MsgBox Ergebnis
End Sub
Sub UserForm1_Start()
Ergebnis = 100 ' Wert setzen
End Sub
Diese Methode erlaubt es Dir, den Wert nach dem Aufruf des Sub zu nutzen.
Praktische Beispiele
Hier sind einige praktische Beispiele, um die Verwendung von Rückgabewerten in VBA zu veranschaulichen:
-
Einfacher Rückgabewert:
Private Function addiere(a As Integer, b As Integer) As Integer
addiere = a + b
End Function
Sub Beispiel()
MsgBox addiere(5, 10) ' Gibt 15 zurück
End Sub
-
Verwendung von Sub mit Parameter:
Sub zeigeErgebnis()
Dim ergebnis As Integer
ergebnis = addiere(5, 10)
MsgBox "Das Ergebnis ist: " & ergebnis
End Sub
Tipps für Profis
-
Verwende Public Variablen: Wenn Du Werte zwischen mehreren Sub oder Function teilen möchtest, sind Public Variablen nützlich.
-
VBA Funktion mit Rückgabewert: Halte Deine Funktionen modular und spezifisch, um die Lesbarkeit und Wartbarkeit Deines Codes zu verbessern.
-
Vermeide globale Variablen: Wenn möglich, beschränke die Verwendung von globalen Variablen, um unerwartete Nebenwirkungen zu verhindern.
FAQ: Häufige Fragen
1. Kann ich einen Rückgabewert von einem Sub bekommen?
Nein, ein Sub in VBA kann keinen Rückgabewert liefern. Verwende stattdessen eine Function.
2. Wie definiere ich eine Funktion in VBA?
Eine Funktion wird mit dem Schlüsselwort Function und dem Rückgabewerttyp definiert, z.B. Private Function berechneWert() As Integer.
3. Was ist der Unterschied zwischen Sub und Function?
Ein Sub führt eine Aktion aus, während eine Function einen Wert zurückgibt, den Du weiterverarbeiten kannst.
4. Kann ich mehrere Werte aus einer Funktion zurückgeben?
Ja, Du kannst mehrere Werte durch die Verwendung von Public Variablen oder durch die Rückgabe von benutzerdefinierten Typen zurückgeben.