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 sampleA()
 Sheets(2).Select
End Sub

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

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

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

新規に作成したブックがアクティブな状態で、以下のSubプロシージャを実行してみてください。


Sub sampleB()
 Sheets("Sheeet1").Select
End Sub

先ほどより、実行時エラーが発生する理由がわかり辛いかもしれません。

「Sheets("Sheeet1")」と、引数に「Sheeet1」という文字列が指定されているところがポイントです。

新規に作成したブックの場合には、
「Sheeet1」という名前のシートは存在せず、
「Sheet1」という名前のシートが存在しているはずです。
「e」の数に注目してください。

「Sheeet1」という実在しない名前のシートを取得しようとしているので、上記のプロシージャも「インデックスが有効範囲にありません。」実行時エラーが発生します。

この記事のキッカケとなった、
「エクセルマクロ sheets(selectedvalue).selectでインデックスが有効でないエラー」
という検索をなさった方は、こちらのケースに近いのではないでしょう。
おそらく、文字列型の「selectedvalue」という変数にセルの値を代入しておいて、シートを選択しようとしていたのでしょう。

「sheets(selectedvalue).select」の直前で、変数selectedvalueにどんな値が代入されているかを、確認してみることをおすすめします。

最終更新日時:2019-01-17 12:03

[スポンサードリンク]

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

TrackBack:0

TrackBack URL

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

「Sheets・Worksheet」の記事一覧

検索


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

.