ExcelVBA覚書 名前定義を削除する

Excelで数式やマクロを使うとき便利だからと名前を定義する人がいるが、本当にやめてほしい「悪習」だと私は思う。
なぜかって、シートのコピーするたびにグチグチ名前重複してもいいか聞いてきて、「もう好きにしろよ!」って思っても、ずぅ~っとすべての名前について聞いてくるのが、まぁ性質の悪いこと、悪いこと!

そういうことがわかっていれば、簡単に名前定義は使わないと思うのだが、まぁ使ってますな・・・
で、削除しちゃえ!

※ 2021/03/03 ブック内の名前定義を削除させるロジック追加


Sub DeleteNamesExcludePrintX()
    
    Dim ws As Worksheet
    Dim nm As Name

    ' シート内の定義(Printから始まる名前定義は印刷設定なので除外)
    For Each ws In ThisWorkbook.Worksheets
        For Each nm In ws.Names
            Debug.Print nm.NameLocal & ": " & nm.Name
            If nm.Name Like "*Print_*" Then
            
            Else
                nm.Delete
            End If
        Next
    Next
    
    ' ブック内の定義
    For Each nm In ThisWorkbook.Names
            Debug.Print "** " & nm.NameLocal & ": " & nm.Name
            nm.Delete
    Next

End Sub


削除するのはいいんだけど、印刷設定まで消すとまずいので、「Print_」から始まる名前は消さないでおく。
(印刷範囲と印刷タイトルが該当する)

ただし、マクロとか数式とかで使ってたらエライコトになるのでご注意を。

Tags:,

Add a Comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください