多次元配列使用時のエラー解決方法|VBA
インデックスが有効範囲にありません
多次元配列の要素数をReDim Preserve
で変更(既存データを保持)する場合は最終次元しか変更できません。
ReDim
のみ(既存データを破棄)は可能です。
Dim arrays() As String
ReDim arrays(1, 128)
ReDim Preserve arrays(0, 64)
Dim arrays() As String
ReDim arrays(1, 128)
ReDim Preserve arrays(1, 64)
この場合、[0, 0]-[0, 64], [1, 0]-[1, 64]までの二次元配列になります。
配列はすでに宣言されています
静的な配列が1回しか宣言できないために発生します。次元を変更できるのは動的な配列だけです。
Dim arrays(1, 128) As String
ReDim arrays(1, 128)
Dim arrays() As String
ReDim arrays(1, 128)
この配列は固定されているか、または一時的にロックされています
静的な配列を引数として渡した場合、コールされた関数側で引数の配列に対して、ReDim
やReDim Preserve
を実行すると発生します。
2次元配列を引数に渡す方法
多次元配列を引数として受け取る方法です。通常の配列と同じように受け取って使用します。
Dim arrays() As String
ReDim arrays(1, 128)
Call FillArrays(arrays)
Function FillArryas(ByRef arrays() As String)
arrays(0, 1) = "01"
End Function