配列を使用する際、「インデックスが有効範囲にありません」エラーが出た
一次元配列、二次元配列でたびたび、実行時エラー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を上手く使ってエラー回避しましょう。
関連記事
コメント