配列を使用する際、「インデックスが有効範囲にありません」エラーが出た
一次元配列、二次元配列でたびたび、実行時エラー9「インデックスが有効範囲にありません」が発生します。
インデックスが有効範囲にありませんが発生するコード
Public Sub sample()
'実行時エラー9
'インデックスに有効範囲がありませんが発生するケース
'■静的配列の定義した要素以外を使用する
Dim arr(1 To 3) As Variant
arr(0) = "あいうえお" '1、2、3の範囲外
arr(5) = "あいうえお" '1、2、3の範囲外
'■動的配列をRedimで定義せず使用する
Dim a() As Variant
a(0) = "あいうえお"
'■動的配列をRedimで定義したが、定義した要素以外を使用する
ReDim a(5, 3)
a(6, 0) = "あいうえお"
End Sub
注意点
- このエラーの回避は単純に指定ミスです。配列は基本0スタートですので、
arr(3)とした場合は0,1,2が使用可能な要素です。 - Option Base 1を指定しても影響を受けず0スタートになる場合もあります。
(Split関数やセルを代入した場合等) - 代入する場合はLboundやUboundを上手く使ってエラー回避しましょう。
関連記事




コメント