動作検証バージョン:Windows版Excel(バージョン1811 ビルド11029.20108)
「vba 動的配列 インデックスが有効範囲に」
といった検索でアクセスが時折あります。
VBAの動的配列で上図のような、
「実行時エラー '9' インデックスが有効範囲にありません。」
というエラーの発生する、原因と対策を探していた方による検索キーワードです。
[スポンサードリンク]
ReDim文の漏れでインデックスが有効範囲にありませんエラーとなる
いくつかの可能性が考えられますが、配列に慣れていない方の場合、以下のようなコードを書いてしまうことがあります。
Sub 動的配列でインデックスが有効範囲にありませんエラーが発生する例()
Dim arr() As String
arr(0) = "い"
arr(1) = "ろ"
arr(2) = "は"
MsgBox Join(arr)
End Sub
Dim arr() As String
arr(0) = "い"
arr(1) = "ろ"
arr(2) = "は"
MsgBox Join(arr)
End Sub
「動的配列」という言葉から、自動的に配列のサイズを変更してくれると、誤解してしまう方がいらっしゃいます。
動的配列は自動的にサイズを変更してくれるわけではない
動的配列は、プロシージャ内で配列サイズを変更できるだけで、自動的にサイズ変更してくれるわけではありません。
Option Base 0
Sub 動的配列のサンプル()
Dim arr() As String
ReDim arr(2)
arr(0) = "い"
arr(1) = "ろ"
arr(2) = "は"
MsgBox Join(arr)
End Sub
Sub 動的配列のサンプル()
Dim arr() As String
ReDim arr(2)
arr(0) = "い"
arr(1) = "ろ"
arr(2) = "は"
MsgBox Join(arr)
End Sub
上記のSubプロシージャのとおり、配列にデータを格納する前に、配列のサイズをReDim文で指定する必要があります。
Dim文だけが存在し、ReDim文が無いときに、配列にデータを代入しようとしても、
「実行時エラー '9' インデックスが有効範囲にありません。」
エラーが発生します。
最終更新日時:2019-01-16 14:52
[スポンサードリンク]
Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 動的配列でインデックスが有効範囲にありませんエラーの発生する原因-ReDimがない