【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に関する記事を不定期で投稿していますので、是非ご覧ください!

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.

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