【Excel VBA】Worksheets.Delete実行時に「実行時エラー’9’」が出る原因と対処法

Excel
スポンサーリンク

今回はWorksheets.Deleteメソッド実行時に「実行時エラー’9’:インデックスが有効範囲にありません。」が出る原因と対処法を紹介したいと思います。

実行時エラー’9’:インデックスが有効範囲にありません。
スポンサーリンク

エラーが発生する原因

原因

結論から言うと削除対象のシートがブック内に無い可能性があります

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

Sub delete_targetSht_Error()
    
    Dim targetShtName           As String
    
    targetShtName = "はりぼな"
    
    ThisWorkbook.Worksheets(targetShtName).Delete

End Sub

コードについてざっくり説明するとtargetShtNameで指定した名前のシートを削除する、という非常にシンプルなものです。

実際に指定した名前のシートがないExcelで実行すると分かりますが、

ThisWorkbook.Worksheets(targetShtName).Delete

の行でエラーが出るはずです。これは、該当するシートがないのに削除する処理を実行したことで発生します。

このように、存在しないシートに対してDeleteを実行すると処理ができず、実行時エラー’9’が起こってしまうわけです。

対処法

対処法として、Worksheets.Deleteメソッド実行前に削除対象のシートがブック内にあるか事前に判定しておくのがお勧めです。

ざっくり言うとFor Each文If文を組み合わせて全てのシートを削除対象のシート名と比較する感じです。

こちらについては、以前投稿した「【Excel VBA】ブック内に特定の名前のシートがあるか判定するFunctionを紹介【備忘録】」で詳しく紹介しているので、こちらも併せてご覧ください!

スポンサーリンク

まとめ

今回はWorksheets.Deleteメソッド実行時に「実行時エラー’9’:インデックスが有効範囲にありません。」が出る原因と対処法を紹介しました。

Worksheets.Deleteメソッド実行時にエラーが出る際は該当するシートがブック内に存在するか確認するようにしましょう!

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

コメント

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