【Excel/VBA】「インデックスが有効範囲にありません 」エラーの原因・解決方法

ExcelのVBA(マクロ)で、「インデックスが有効範囲にありません 」エラーの原因・解決方法についてまとめました。

【エラーの原因・解決方法】「インデックスが有効範囲にありません 」

Excel VBAを実行したときに以下のエラーが出ることがあります。

実行時エラー 9
インデックスが有効範囲にありません

これは、配列を使用したときに要素数が不足しているときなどによく出るエラーです。
そりゃそうです。Worksheets(1)からWorksheets(3)までしかないのに、Worksheets(4)を調べようとしているのですから。30人の生徒がいるクラスで、出席番号31番の生徒を指しているようなものですね。”学校の怪談”じゃないんですから、それで返事される方が怖いです。

インデックスは、コレクションの数だけではありません。次のようなケースでも同じエラーが起こります。

Sub test()
    ' 要素10個の配列を生成
    Dim time(9) As Variant

    ' ループ変数
    Dim i As Integer

    ' ループ変数をカウント(0~10)、繰り返し回数11
    For i = 0 To 10
        time(i) = i
    Next i

    ' 要素を表示
    For x = 0 To UBound(time)
        msg = msg & time(x) & vbCrLf
        MsgBox msg
    Next
End Sub

上記の場合は配列の要素数をループ回数と合わせればエラーが解消されます。

Dim time(10) As Variant
関連記事
1 【VBA入門】Excelマクロで仕事・作業を自動化

コメント