ブック内の名前定義を削除するには
名前定義を全て削除しようとしたとき、以下のような記述するとエラーが発生してしまいます。
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



コメント