サイトについて      連絡先   検索

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

はじめに

Excel VBA のエラー 9 「インデックスが有効範囲にありません。」の対処法を紹介します。

配列やコレクションのインデックスが要素数より大きいときに発生します。

存在しない名前をコレクションに指定しても発生します。

解決する

要素数を超えないインデックスを指定する

要素数 3 の配列にインデックス 4 を指定したときに発生します。

Dim list(3) As String
Dim s As String

s = list(4) ' エラー
s = list(3) ' 正常
s = list(LBound(list)) ' 最小インデックスを指定 0
s = list(UBound(list)) ' 最大インデックスを指定 3

配列の最小インデックスは「LBound 関数」から、最大インデックスは「UBound 関数」から取得できます。

存在する名前を指定する

Sheets など名前を受け取れるコレクションに、存在しない名前を指定したときにも発生します。

Dim ws As Worksheet

Set ws = Sheets("なし")   ' エラー
Set ws = Sheets("Sheet1") ' 正常
1

コレクションに存在するか「シートが存在するか確認する」などで確認してから、名前を指定するようにします。

関連ページ