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

Excel
スポンサーリンク

今回はWorksheets.Addメソッド実行時に「実行時エラー’1004’:この名前は既に使用されています。別の名前を入力してください。」が出る原因と対処法を紹介したいと思います。

スポンサーリンク

エラーが発生する原因

原因

結論から言うと既にその名前のシートがブック内にある可能性があります

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

Sub add_targetSht_Error()
    
    Dim targetShtName           As String
    Dim targetSht               As Worksheet
    
    targetShtName = "はりぼな"

    Set targetSht = ThisWorkbook.Worksheets.Add(after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count))
    targetSht.Name = targetShtName
    
End Sub

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

あらかじめブック内に変更したい名前のシートがある状態のExcelで実行すると分かりますが、

targetSht.Name = targetShtName

の行でエラーが出るはずです。これは既に指定した名前のシートがある状態で処理を実行したことで発生します。

というのもExcelは同じ名前のシートを2つ以上作成することができません。その為、既にその名前のシートがある状態だと処理ができず、実行時エラー’1004’が起こってしまうわけです。

対処法

対処法として、Worksheets.Addメソッド実行前に追加したい名前のシートがブック内にあるか事前に判定しておくのがお勧めです。

ざっくり言うとFor Each文If文を組み合わせて全てのシートを追加したいシート名と比較する感じです。

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

スポンサーリンク

まとめ

今回はWorksheets.Deleteメソッド実行時に「実行時エラー’1004’:この名前は既に使用されています。別の名前を入力してください。」が出る原因と対処法を紹介しました。

Worksheets.Addメソッド実行時にエラーが出る際は、追加したいシート名がブック内に存在するか確認するようにしましょう!

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

コメント

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