Effizientes Übergeben von Argumenten
Alle Argumente werden als Verweis an Prozeduren übergeben, es sei denn, Sie geben etwas anderes an. Dies ist effizient, da alle Argumente, die als Verweis übergeben werden, die gleiche Zeit und dieselbe Menge An Speicherplatz (4 Bytes) innerhalb einer Prozedur benötigen, unabhängig vom Datentyp des Arguments.
Sie können ein Argument mit Wert übergeben, wenn Sie das Schlüsselwort ByVal in die Deklaration der Prozedur einfügen. Argumente, die vom Wert übergeben werden, verbrauchen je nach Datentyp des Arguments 2 bis 16 Bytes innerhalb der Prozedur. Bei größeren Argumenten kann die Übergabe mit Wert etwas mehr Zeit in Anspruch nehmen als bei kleineren Argumenten. Daher sollten die String - und Variant -Datentypen generell nicht mit Wert übergeben werden.
Beim Übergeben eines Arguments mit Wert wird die ursprüngliche Variable kopiert. Änderungen des Arguments innerhalb der Prozedur spiegeln sich nicht in der ursprünglichen Variable wider. Beispiel:
Function Factorial(ByVal MyVar As Integer) ' Function declaration.
MyVar = MyVar - 1
If MyVar = 0 Then
Factorial = 1
Exit Function
End If
Factorial = Factorial(MyVar) * (MyVar + 1)
End Function
' Call Factorial with a variable N.
Sub Test()
N = 5
Debug.Print Factorial(N) ' Displays 120 (the factorial of 5)
Debug.Print N ' Displays 5.
End Sub
Ohne das Einfügen von ByVal in die Funktionsdeklaration würden für die vorherigen Print -Anweisungen 1 und 0 angezeigt werden. Dies liegt daran, dass MyVar
dann auf die Variable S
verweist, die um 1 reduziert wird, bis sie gleich 0 ist.
Da ByVal eine Kopie des Arguments erstellt, können Sie eine Variante an die Factorial-Funktion übergeben. Das Übergeben einer Variante nach Verweis ist nicht möglich, wenn die Prozedur, mit deren Hilfe das Argument deklariert wird, einem anderen Datentyp entspricht.
Siehe auch
Support und Feedback
Haben Sie Fragen oder Feedback zu Office VBA oder zu dieser Dokumentation? Unter Office VBA-Support und Feedback finden Sie Hilfestellung zu den Möglichkeiten, wie Sie Support erhalten und Feedback abgeben können.