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 S. 
S = 5 
Print Factorial(S) ' Displays 120 (the factorial of 5) 
Print S ' Displays 5. 

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, MyVar dass sich dann auf die Variable Sbezieht, 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.