関数・メソッド

ブック内の名前定義を全て削除【Namesプロパティ】【Deleteメソッド】【ExcelVBA】

ブック内の名前定義を削除するには

名前定義を全て削除しようとしたとき、以下のような記述するとエラーが発生してしまいます。

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
    
    

関連記事

コメント

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