配列操作

配列を引数として他のプロシージャに渡す【ExcelVBA】

構文

Sub プロシージャ名( Array() As Data type

Function プロシージャ名( Array() As Data type) As Data type

引数Arrayプロシージャに渡す引数(配列)
Data typeVariant/Longなどのデータ型
戻り値Data typeVariant/Longなどの任意の戻り値

配列を引数として他のプロシージャに渡すサンプルコード

Public Sub sample_Array_Argument()
    
    Dim arr() As Variant
    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(sArray() As Variant)
    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】

コメント

タイトルとURLをコピーしました