#前書き
久しぶりにVBAを使うと毎回のように調べているので、VBAでプロシージャに配列を引数として渡す、戻り値として受け取る方法をまとめました。
初めての投稿なので、未熟な部分がありましたらご指摘いただけると幸いです。
#配列を引数として渡す
呼び出し時の変数名の後ろの「()」を付けなくても実行できる。
配列を引数にする場合は参照渡し(ByRef)にする必要がある。
Sub main()
Dim arr(2) As Long
arr(0) = 1
arr(1) = 2
arr(2) = 3
Call test(arr())
End Sub
Sub test(ByRef arr() As Long)
Dim val As Variant
For Each val In arr
Debug.Print val
Next
End Sub
実行結果
1
2
3
値渡し(ByVal)や引数の変数名の後ろに「()」を付けないとエラーになる。
値渡しにした場合
変数名の後ろに「()」を付けない場合
#配列を戻り値として受け取る
戻り値を受け取る配列は動的配列にしておく必要がある。
Sub main()
Dim arr() As Long
arr() = test()
Dim val As Variant
For Each val In arr
Debug.Print val
Next
End Sub
Function test() As Long()
Dim arr(2) As Long
arr(0) = 1
arr(1) = 2
arr(2) = 3
test = arr()
End Function
実行結果
1
2
3
ファンクションプロシージャに戻り値の型を記載する場合は変数名の末尾に「()」を付けないとエラーになる。