/ / Excel VBA ByRef und ByVal

Excel VBA ByRef und ByVal

Sie können Argumente an eine Prozedur übergeben (Funktion oder Sub) durch Bezugnahme oder nach Wert. Standardmäßig, Excel VBA übergibt Argumente als Referenz. Wie immer werden wir ein einfaches Beispiel verwenden, um die Dinge klarer zu machen.

Fügen Sie eine Befehlsschaltfläche in Ihrem Arbeitsblatt ein, und fügen Sie die folgenden Codezeilen hinzu:

Dim x As Integer
x = 10

MsgBox Triple(x)
MsgBox x

Der Code ruft die Funktion Triple auf. Es ist das Ergebnis der zweiten MsgBox, an der wir interessiert sind. Funktionen müssen in einem Modul platziert werden.

1. Öffnen Sie den Visual Basic-Editor und klicken Sie auf Einfügen, Modul.

2. Fügen Sie die folgenden Codezeilen hinzu:

Function Triple(ByRef x As Integer) As Integer

x = x * 3
Triple = x

End Function

Ergebnis, wenn Sie auf die Befehlsschaltfläche auf dem Blatt klicken:

ByRef Ergebnis

ByRef Ergebnis

3. Ersetzen Sie ByRef durch ByVal.

Function Triple(ByVal x As Integer) As Integer

x = x * 3
Triple = x

End Function

Ergebnis, wenn Sie auf die Befehlsschaltfläche auf dem Blatt klicken:

ByVal Ergebnis

ByVal Ergebnis

Erläuterung: Wenn wir Argumente als Referenz übergeben, verweisen wir auf den ursprünglichen Wert. Der Wert von x (der ursprüngliche Wert) wird in der Funktion geändert. Als Ergebnis zeigt die zweite MsgBox einen Wert von 30 an. Wenn Argumente nach Wert übergeben werden, übergeben wir eine Kopie an die Funktion. Der ursprüngliche Wert wird nicht geändert. Als Ergebnis zeigt die zweite MsgBox einen Wert von 10 (der ursprüngliche Wert) an.

Lesen Sie auch: