Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » Sheets・Worksheetsでインデックスが有効範囲にありませんエラーの発生する原因

Sheets・Worksheetsでインデックスが有効範囲にありませんエラーの発生する原因

対象:Excel2007, Excel2010, Excel2013, Windows版Excel2016

Excelマクロを作る際、よく見かけるエラーに
「実行時エラー'9' インデックスが有効範囲にありません。」
があります。

Sheets・Worksheetsでインデックスが有効範囲にありませんエラーの発生する原因

このサイト『インストラクターのネタ帳』のアクセスログでも、
「vba sheets インデックスが有効 excel2013」
「エクセルマクロ sheets(selectedvalue).selectでインデックスが有効でないエラー」
といった検索キーワードを見かけます。

[スポンサードリンク]

どのようなときに
「インデックスが有効範囲にありません。」
エラーが発生するのか、理解しましょう。

数値指定時のインデックスが有効範囲にありませんエラー

まずは、シートが1枚しかないブックがアクティブな状態で、以下のSubプロシージャを実行してみてください。
Sub sample_存在しないインデックス番号()
 Sheets(2).Select
End Sub

シートが1枚しかないにも関わらず、「Sheets(2)」と存在していない2枚目のシートを取得しようとしているので、「インデックスが有効範囲にありません。」エラーとなります。

上記プロシージャの、
  Sheets(2).Select
の部分を、
  Sheets(1).Select
に変更すれば、「インデックスが有効範囲にありません。」エラーは発生しなくなります。

名前指定時のインデックスが有効範囲にありませんエラー

新規に作成したブックがアクティブな状態で、以下のSubプロシージャを実行してみてください。
Sub sample_存在しないシート名()
 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

[スポンサードリンク]

Home » エクセルマクロ・Excel VBAの使い方 » Sheets・Worksheet » Sheets・Worksheetsでインデックスが有効範囲にありませんエラーの発生する原因

「Sheets・Worksheet」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.