Excelマクロを作る際、よく見かけるエラーに
「実行時エラー'9' インデックスが有効範囲にありません。」
があります。
このサイト『インストラクターのネタ帳』のアクセスログでも、
「vba sheets インデックスが有効 excel2013」
「エクセルマクロ sheets(selectedvalue).selectでインデックスが有効でないエラー」
といった検索キーワードを見かけます。
どのようなときに
「インデックスが有効範囲にありません。」
エラーが発生するのか、理解しましょう。
数値指定時のインデックスが有効範囲にありませんエラー
まずは、シートが1枚しかないブックがアクティブな状態で、以下のSubプロシージャを実行してみてください。Sheets(2).Select
End Sub
シートが1枚しかないにも関わらず、「Sheets(2)」と存在していない2枚目のシートを取得しようとしているので、「インデックスが有効範囲にありません。」エラーとなります。
上記プロシージャの、
Sheets(2).Select
の部分を、
Sheets(1).Select
に変更すれば、「インデックスが有効範囲にありません。」エラーは発生しなくなります。
名前指定時のインデックスが有効範囲にありませんエラー
新規に作成したブックがアクティブな状態で、以下のSubプロシージャを実行してみてください。Sheets("Sheeet1").Select
End Sub
実行時エラーが発生する理由が、先ほどの例よりも、わかり辛いかもしれません。
「Sheets("Sheeet1")」と、引数に「Sheeet1」という文字列が指定されているところがポイントです。
新規に作成したブックの場合には、
「Sheeet1」という名前のシートは存在せず、
「Sheet1」という名前のシートが存在しているはずです。
「e」の数に注目してください。
「Sheeet1」という実在しない名前のシートを取得しようとしているので、上記のプロシージャも「インデックスが有効範囲にありません。」実行時エラーが発生します。
この記事のキッカケとなった、
「エクセルマクロ sheets(selectedvalue).selectでインデックスが有効でないエラー」
という検索をなさった方は、こちらのケースに近いのではないかと想像しています。
おそらくは、文字列型の「selectedvalue」という変数にセルの値を代入しておいて、シートを選択しようとしていたのでしょう。
「sheets(selectedvalue).select」の直前で、変数selectedvalueにどのようなな値が代入されているかを、ローカルウィンドウで確認してみることをおすすめします。
最終更新日時:2020-05-29 14:16
- Newer:他のブックへのリンクがあるかを調べるExcelマクロ
- Older:再帰処理でフォルダー一覧を作成するExcelマクロ
Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » Sheets・Worksheetsでインデックスが有効範囲にありませんエラーの発生する原因