【Excel VBA】シート取得時に「インデックスが有効範囲にありません。」が出る原因と対処法

Excel
スポンサーリンク

今回はシート取得時に実行時エラー ‘9’:「インデックスが有効範囲にありません。」が出る原因と対処法を備忘録も兼ねて紹介したいと思います。

スポンサーリンク

原因

結論から言うと指定したシート名に誤りがある可能性があります。

以下のコードを使って説明します。

Sub test_GetSheetError()

    Dim mySht    As Worksheet
        
    Set mySht = Sheets("Sheet1")
    
    MsgBox mySht.Name

End Sub

指定したシートを取得し、そのシート名をメッセージボックスに出力するという極めてシンプルなマクロなのですが、実行してみるとSet mySht = Sheets("Sheet1")のところでエラーが発生してしまいます。

これは、Sheets("Sheet1")の「1」が全角になっており、「Sheet1」という名前のシートが見つからないからエラーが起きてしまった、ということになります。

'取得したいシート名(正)
Sheets("Sheet1")

'指定したシート名(誤)
Sheets("Sheet1")
スポンサーリンク

対処法

対処法としてはもうシンプルに「取得したいシートの名前が間違っていないか。」これに尽きます。

具体的には、

  • そもそものシート名が間違っていないか
  • 数字,の全角・半角が一致しているか
  • 前後にブランク(スペース)が入っていないか

単純ではありますが、意外とやるミスなので取得できないときは上記3点を確認してみましょう。

ちなみに余談ですがExcelのシートでSheet1のようになっている場合、SHEET1で指定しても取得することが出来ます。
正直役に立つかは微妙ですが、頭の片隅に入れておくいいかもしれません。

'「Sheet1」を取得したい時

Set mySht = Sheets("Sheet1")

'こっちでも可
Set mySht = Sheets("SHEET1")
スポンサーリンク

まとめ

今回はシート取得時に実行時エラー ‘9’:「インデックスが有効範囲にありません。」が出る原因と対処法を備忘録も兼ねて紹介しました。

シート取得時に上記エラーが発生する時は、取得したいシート名に誤りがないかを確認するようにしましょう!

このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!

タイトルとURLをコピーしました