構文
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】
コメント