Looking for vba Answers? Try Ask4KnowledgeBase
Looking for vba Keywords? Try Ask4Keywords

VBA引数ByRefまたはByValを渡す


前書き

ByRefおよびByVal修飾子は、プロシージャのシグネチャの一部であり、引数がプロシージャに渡される方法を示します。 VBAでは、特に指定されていない限り、 ByRefが渡されます( ByRefは、存在しない場合は暗黙的です)。

注意:他の多くのプログラミング言語(VB.NETを含む)では、修飾子が指定されていない場合、パラメータは暗黙的に渡されます。混乱を避けるためにByRef修飾子を明示的に指定することを検討してください。

備考

配列を渡す

配列参照渡しする必要あります。このコードはコンパイルされますが、実行時エラー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

このコードはコンパイルされません:

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

引数ByRefまたはByValを渡す 関連する例