Looking for vba Keywords? Try Ask4Keywords

VBAArgumente übergeben ByRef oder ByVal


Einführung

Die Modifizierer ByRef und ByVal sind Teil der Signatur einer Prozedur und geben an, wie ein Argument an eine Prozedur übergeben wird. In VBA wird ein Parameter an ByRef sofern nichts anderes angegeben ist (dh ByRef ist implizit, falls nicht vorhanden).

Hinweis In vielen anderen Programmiersprachen (einschließlich VB.NET) werden Parameter implizit durch einen Wert übergeben, wenn kein Modifikator angegeben ist. Sie ByRef explizit ByRef Modifikatoren angeben, um mögliche Verwirrungen zu vermeiden.

Bemerkungen

Arrays übergeben

Arrays müssen als Referenz übergeben werden. Dieser Code wird kompiliert, verursacht jedoch den Laufzeitfehler 424 "Object Required":

Public Sub Test()
    DoSomething Array(1, 2, 3)
End Sub

Private Sub DoSomething(ByVal foo As Variant)
    foo.Add 42
End Sub

Dieser Code kompiliert nicht:

Private Sub DoSomething(ByVal foo() As Variant) 'ByVal is illegal for arrays
    foo.Add 42
End Sub

Argumente übergeben ByRef oder ByVal Verwandte Beispiele