Home » エクセルマクロ・Excel VBAの使い方 » 配列 » 動的配列でインデックスが有効範囲にありませんエラーの発生する原因-ReDimがない

動的配列でインデックスが有効範囲にありませんエラーの発生する原因-ReDimがない

動作検証バージョン: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

「動的配列」という言葉から、自動的に配列のサイズを変更してくれると、誤解してしまう方がいらっしゃいます。

動的配列は自動的にサイズを変更してくれるわけではない

動的配列は、プロシージャ内で配列サイズを変更できるだけで、自動的にサイズ変更してくれるわけではありません。
Option Base 0
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がない

「配列」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.