今回はWorksheets.Addメソッド実行時に「実行時エラー’1004’:この名前は既に使用されています。別の名前を入力してください。」が出る原因と対処法を紹介したいと思います。
![](https://masashi-blog418.com/wp-content/uploads/2023/07/image-4.png)
エラーが発生する原因
原因
結論から言うと既にその名前のシートがブック内にある可能性があります。
以下のコードを使って説明します。
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に関する記事を不定期で投稿していますので、是非ご覧ください!
コメント