ブック内の名前定義を削除するには
名前定義を全て削除しようとしたとき、以下のような記述するとエラーが発生してしまいます。
ThisWorkbook.Names.Delete
これはNamesプロパティにはDeleteメソッドが無いためです。
For Eachステートメントを使用すれば、ブック内の全ての名前定義を削除することができます。
ブック内の名前定義を全て削除するサンプルコード
Public Sub Sample() 'セルの範囲に名前を定義する Range("A1:B1").Name = "一行目" Range("A2:B2").Name = "二行目" Range("A3:B3").Name = "三行目" 'ブック内のNamesコレクションを全て削除する Dim tmp As Name For Each tmp In ThisWorkbook.Names tmp.Delete Next End Sub
注意点
- Cntl+F3で「名前の管理」を表示し、削除されているか確認できます。
- シートをコピーしたときなどに、「名前〇〇はすでに定義されています」と表示されることがあります。
どこにもそんな名前定義は見つからない…この場合、名前定義が何らかの理由で非表示なっています。
下記のように、Visibleプロパティを使って隠れている名前定義を表示してください。Public Sub Sample2() Dim tmp As Name For Each tmp In ActiveWorkbook.Names tmp.Visible = True '名前定義を全て表示する Next End Sub
コメント