Share via


Übergeben von Argumenten als Wert oder als Verweis

Beim Definieren einer Prozedur haben Sie zwei Möglichkeiten, Argumente an sie zu übergeben: als Wert oder als Verweis. Wenn eine Variable als Verweis an eine Prozedur übergeben wird, übergibt VBA (Microsoft® Visual Basic® für Applikationen) die Arbeitsspeicheradresse der Variablen an die Prozedur, die diese direkt ändern kann. Wenn die Ausführung zur aufrufenden Prozedur zurückkehrt, enthält die Variable den geänderten Wert.

Wenn ein Argument als Wert übergeben wird, übergibt VBA eine Kopie der Variablen an die Prozedur. Die Prozedur ändert diese Kopie, und der ursprüngliche Wert der Variablen bleibt unverändert; wenn die Ausführung zur aufrufenden Prozedur zurückkehrt, enthält die Variable den gleichen Wert wie vor der Übergabe.

Standardmäßig übergibt VBA Argumente als Verweis. Um ein Argument als Wert zu übergeben, müssen Sie dem Argument in der Prozedurdefinition wie folgt das ByVal-Schlüsselwort voranstellen:

Function SomeProc(strText As String, _
                  ByVal lngX As Long) As Boolean

Wenn Sie explizit angeben möchten, dass ein Argument als Verweis übergeben wird, können Sie dem Argument in der Argumentliste das ByRef-Schlüsselwort voranstellen.

Die Übergabe als Verweis kann nützlich sein, dafür sollten Sie die Funktionsweise kennen lernen. Arrays müssen z. B. als Verweis übergeben werden; wenn Sie versuchen, ein Array als Wert zu übergeben, tritt ein Syntaxfehler auf. Da Arrays als Verweise übergeben werden, können Sie ein Array zum Ändern an eine andere Prozedur übergeben und in der aufrufenden Prozedur dann mit dem geänderten Array weiterarbeiten.

Siehe auch

Tipps zum Definieren von Prozeduren in VBA | Verwenden optionaler Argumente | Verwenden von Parameterarrays