構文
Sub プロシージャ名( Array() As Data type)
Function プロシージャ名( Array() As Data type) As Data type
| 引数 | Array | プロシージャに渡す引数(配列) |
| Data type | Variant/Longなどのデータ型 | |
| 戻り値 | Data type | Variant/Longなどの任意の戻り値 |
配列を引数として他のプロシージャに渡すサンプルコード
Public Sub sample_Array_Argument()
Dim arr() As Long
ReDim arr(1 To 3)
'■数値を配列に代入
arr(1) = 1
arr(2) = 2
arr(3) = 3
'■配列を引数で渡すプロシージャ(渡した値を2倍にするプロシージャ)
Call call_FuncDouble(arr())
'■プロシージャ後の結果
Debug.Print arr(1) '2
Debug.Print arr(2) '4
Debug.Print arr(3) '6
End Sub
Public Function call_FuncDouble(ByRef sArray() As Long)
Dim i As Long
'■配列の最小値から最大値迄ループ処理する。
For i = LBound(sArray) To UBound(sArray)
sArray(i) = sArray(i) * 2
Next i
End Function
注意点
- 配列引数はByRefである必要あります。
ByValで設定するとエラーが発生します。コンパイルエラー
配列引数はByRefでなければなりません - つまり、一度引数として他のプロシージャへ渡すと元のデータはなくなります。
関連記事
一次元/二次元配列が空かどうか判定する【ExcelVBA】
一次元/二次元配列の要素数の最小値を取得する【Lbound関数】
一次元/二次元配列の要素数の最大値を取得する【Ubound関数】
配列かどうか調べる【IsArray関数】【ExcelVBA】
配列から空白(Empty)を削除する【ExcelVBA】
コメント