配列操作

一次元配列/二次元配列で「インデックスが有効範囲にありません」が出た場合【ExcelVBA】

配列を使用する際、「インデックスが有効範囲にありません」エラーが出た

一次元配列、二次元配列でたびたび、実行時エラー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関数セルを代入した場合等)
  • 代入する場合はLboundUboundを上手く使ってエラー回避しましょう。

関連記事

 

コメント

タイトルとURLをコピーしました