Excel VBA ByRef und ByVal
Sie können Argumente an eine Prozedur (Funktion oder sub) als Referenz oder als Wert übergeben. Standardmäßig übergibt Excel VBA Argumente Bezug genommen wird. Wie immer werden wir ein einfaches Beispiel, um die Dinge klarer verwenden.
Platzieren Sie eine Befehlstaste auf dem Arbeitsblatt und fügen Sie die folgenden Codezeilen:
Dim x As Integer x = 10 MsgBox Triple(x) MsgBox x
Der Code ruft die Funktion verdreifachen. Es ist das Ergebnis der zweiten MsgBox wir interessiert sind. Funktionen müssen in ein Modul platziert werden.
-
Öffnen Sie den Visual Basic-Editor und klicken Sie auf Einfügen, Modul.
-
Die folgenden Codezeilen hinzu:
Function Triple(ByRef x As Integer) As Integer x = x 3 Triple = x End Function
Ergebnis, wenn Sie auf das Befehlsschaltflächen auf dem Blatt klicken:
-
Setzen Sie ByRef mit ByVal.
Function Triple(ByVal x As Integer) As Integer x = x 3 Triple = x End Function
Ergebnis, wenn Sie auf das Befehlsschaltflächen auf dem Blatt klicken:
Erläuterung: Wenn Argumente durch Verweis geben wir den ursprünglichen Wert verweisen. Der Wert von x (der ursprünglichen Wert) in der Funktion geändert. Als Ergebnis wird die zweite MsgBox zeigt einen Wert von 30. Wenn Argumente von Wert geben wir eine Kopie an die Funktion sind vorbei. Der ursprüngliche Wert wird nicht verändert. Als Ergebnis wird die zweite MsgBox zeigt einen Wert von 10 (der ursprünglichen Wert).