Mehrere Werte an Funktion übergeben ohne Rückgabewert
Schritt-für-Schritt-Anleitung
Wenn Du in VBA eine Subroutine (Sub) hast, die mehrere Parameter benötigt, und Du dabei keinen Rückgabewert erwartest, folge diesen Schritten:
-
Definiere Deine Subroutine: Erstelle eine Subroutine, die die gewünschten Parameter akzeptiert. Wenn Du mehrere Werte übergeben möchtest, kannst Du diese direkt in der Subroutine definieren.
Sub Power(Wert1 As Variant, Wert2 As Variant)
Ausgeben Wert1, Wert2
End Sub
-
Erstelle die Funktion: Deine Funktion, die die Werte verarbeitet, kann so aussehen. Beachte, dass es keine Rückgabewerte gibt.
Sub Ausgeben(Wert3 As Variant, Wert4 As Variant)
' Hier kannst Du die Werte verarbeiten
End Sub
-
Rufe die Subroutine auf: Um die Subroutine zu starten, verwendest Du einen Funktionsaufruf.
Call Power(10, 20)
Häufige Fehler und Lösungen
Ein häufiges Problem, das Benutzer erleben, ist die Verwendung einer Funktion (Function) anstelle einer Subroutine (Sub), wenn kein Rückgabewert benötigt wird. Hier sind einige Lösungen:
- Problem: Der Befehl
Ausgeben(Wert1, Wert2)
wird rot markiert.
- Lösung: Stelle sicher, dass Du eine Subroutine verwendest, nicht eine Funktion, wenn Du keinen Rückgabewert benötigst.
- Verwende
Call Ausgeben(Wert1, Wert2)
oder einfach Ausgeben Wert1, Wert2
.
Alternative Methoden
Falls Du lieber eine Funktion verwenden möchtest, die mehrere Rückgabewerte liefern kann, könntest Du ein Array oder ein benutzerdefiniertes Typ verwenden:
-
Array zurückgeben:
Function BerechneWerte(Wert1 As Double, Wert2 As Double) As Variant
Dim Ergebnisse(1 To 2) As Double
Ergebnisse(1) = Wert1 + Wert2
Ergebnisse(2) = Wert1 - Wert2
BerechneWerte = Ergebnisse
End Function
-
Benutzerdefinierter Typ:
Type ErgebnisseTyp
Summe As Double
Differenz As Double
End Type
Function Berechne(Wert1 As Double, Wert2 As Double) As ErgebnisseTyp
Dim Ergebnisse As ErgebnisseTyp
Ergebnisse.Summe = Wert1 + Wert2
Ergebnisse.Differenz = Wert1 - Wert2
Berechne = Ergebnisse
End Function
Praktische Beispiele
Hier sind einige praktische Beispiele, um zu zeigen, wie Du die Parameter übergeben kannst:
-
Subroutine ohne Rückgabewert:
Sub Power(Wert1 As Integer, Wert2 As Integer)
MsgBox "Die Summe ist: " & Wert1 + Wert2
End Sub
-
Funktion mit mehreren Rückgabewerten:
Function Berechne(Wert1 As Double, Wert2 As Double) As Double()
Dim Ergebnisse(1 To 2) As Double
Ergebnisse(1) = Wert1 + Wert2
Ergebnisse(2) = Wert1 - Wert2
Berechne = Ergebnisse
End Function
Du kannst nun die Rückgabewerte wie folgt verwenden:
Dim Ergebnisse() As Double
Ergebnisse = Berechne(10, 5)
MsgBox "Summe: " & Ergebnisse(1) & ", Differenz: " & Ergebnisse(2)
Tipps für Profis
- Verwende
ByRef
und ByVal
: Achte darauf, ob Du die Parameter als Referenz oder Wert übergeben möchtest. ByRef
ist standardmäßig, bedeutet, dass Änderungen an den Parametern auch außerhalb der Subroutine sichtbar sind.
- Dokumentation: Kommentiere Deinen Code, um die Verwendung der Parameter klar zu machen, insbesondere wenn mehrere Parameter beteiligt sind.
- Fehlerbehandlung: Implementiere Fehlerbehandlungsroutinen, um Probleme bei der Parameterübergabe frühzeitig zu erkennen.
FAQ: Häufige Fragen
1. Kann ich mehrere Parameter an eine Funktion übergeben, die keinen Rückgabewert hat?
Nein, eine Funktion ist darauf ausgelegt, einen Rückgabewert zu liefern. Verwende stattdessen eine Subroutine.
2. Wie rufe ich eine Subroutine mit mehreren Parametern auf?
Du kannst die Subroutine mit dem Befehl Call
oder direkt aufrufen. Zum Beispiel: Call Power(10, 20)
oder Power 10, 20
.
3. Was ist der Unterschied zwischen ByRef
und ByVal
?
ByRef
übergibt den Verweis auf die Variable, während ByVal
den Wert der Variablen übergibt. Bei ByRef
können Änderungen in der Subroutine die Originalvariable beeinflussen.