大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、名前の定義を削除する方法について、ご紹介します。名前の定義を削除するには、「Name.Delete」を使います。削除したい名前の定義に応じて、「For Each」を使うと、自由に名前の定義を削除することができます。

はじめに

この記事では、名前の定義を削除する方法について、ご紹介します。

名前の定義を削除するには、「Name.Delete」を使います。

名前の定義には、「ブック単位」や「シート単位」があります。

条件に応じて、「For Each」を使って名前の定義をループすると、自由に、削除したい名前の定義を、削除することができます。

では、名前の定義を削除する方法について、解説していきます。

この記事で紹介すること

  • 名前の定義を削除する方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAで名前の定義を削除する

VBAで、名前の定義を削除する方法について、解説します。

Name.Deleteを使う

名前の定義を削除するには、「Name.Delete」を使います。

入力は、こんな感じです。

「Worksheets(シート名).セル.Name.Delete」

という感じです。

名前の定義を削除してみる

VBAで、名前の定義を削除するVBAコードです。

Sub TEST1()
    
    '名前の定義を削除
    ActiveSheet.Cells(1, 1).Name.Delete
    
End Sub

セルA1に「名前1」という名前の定義をしておきました。

セルA1に名前の定義を設定しておいた

名前の定義を設定しておく

では、VBAコードを実行して、名前の定義を削除してみます。

名前の定義を削除

Name.Deleteを使って名前の定義を削除した結果

セルA1に定義された「名前1」を、削除できました。

こんな感じで、セル範囲がわかっていれば、名前の定義を削除するのは、簡単です。

次に、名前の定義を設定したセル範囲がわからない状態で、名前の定義を削除する、というのをやってみます。

VBAで全ての名前の定義を削除

VBAで、全ての名前の定義を削除するというのをやってみます。

名前の定義は、「ブック単位」や「シート単位」がありますので、次のパターンで、全ての名前の定義を削除してみます。

  • 「ブック内の全て」の名前の定義を削除
  • 「ブック単位」の名前の定義を削除
  • 「シート単位」の名前の定義を削除
  • 「特定シート」の名前の定義を削除

というパターンで、名前の定義を削除してみます。

ブック内の全ての名前の定義を削除

まずは、「ブック内の全て」の名前の定義を削除してみます。

これは、比較的に簡単です。

VBAコードは、次のようになります。

Sub TEST2()
    
    'ブック内の名前の定義で、ループ
    For Each a In ActiveWorkbook.Names
        a.Delete '名前の定義を削除
    Next
    
End Sub

次のように、複数の名前の定義を設定しておきました。

複数の名前の定義を設定しておいた

複数の名前の定義を設定しておいた

Sheet1とSheet2に、ブック単位とシート単位の両方の、名前の定義を設定してあります。

では、VBAコードを実行してみます。

「ブック内の全て」の名前の定義を削除

ブック内の全ての名前の定義を削除した結果

ブック内の全ての名前の定義を、削除することができました。

ブック単位の名前の定義を削除

次に、「ブック単位」の名前の定義を削除してみます。

VBAコードは、次のようになります。

Sub TEST3()
    
    'ブック内の名前の定義で、ループ
    For Each a In ActiveWorkbook.Names
        '親要素が、ブック名の場合
        If a.Parent.Name = ThisWorkbook.Name Then
            a.Delete '名前の定義を削除
        End If
    Next
    
End Sub

ポイントは、「If a.Parent.Name = ThisWorkbook.Name」というように、親要素が、ブック名と一致した場合のみ削除する、というところです。

次のように、複数の名前の定義を設定しておきました。

複数の名前の定義を設定しておいた

複数の名前の定義を設定しておいた

Sheet1とSheet2に、ブック単位とシート単位の両方の、名前の定義を設定してあります。

では、VBAコードを実行してみます。

「ブック単位」の名前の定義を削除

ブック単位の名前の定義を削除した結果

ブック単位の名前の定義を、削除することができました。

シート単位の名前の定義を削除

次は、「シート単位」の名前の定義を削除してみます。

Sheet2のシート単位に定義された名前を、削除するVBAコードです。

Sub TEST4()
    
    'シートの名前の定義で、ループ
    For Each a In Worksheets("Sheet2").Names
        a.Delete '名前の定義を削除
    Next
    
End Sub

ポイントは、「Worksheets("Sheet2").Names」で、ループしているところです。

次のように、複数の名前の定義を設定しておきました。

複数の名前の定義を設定しておいた

複数の名前の定義を設定しておいた

Sheet1とSheet2に、ブック単位とシート単位の両方の、名前の定義を設定してあります。

では、VBAコードを実行してみます。

Sheet2の「シート単位」の名前の定義を削除

シート単位の名前の定義を削除した結果

Sheet2のシート単位の名前の定義を、削除することができました。

特定シートの名前の定義を削除

次は、「特定シートに定義された」名前の定義を削除してみます。

こっちの方が使うかと思います。

シート単位の名前の定義ではなく、特定シートに定義されたブック単位とシート単位の、名前の定義を全て削除します。

Sheet2に定義された名前の定義を、削除するVBAコードです。

Sub TEST5()
    
    'シートの名前の定義で、ループ
    For Each a In ActiveWorkbook.Names
        If Range(a).Parent.Name = "Sheet2" Then
            a.Delete '名前の定義を削除
        End If
    Next
    
End Sub

ポイントは、「If Range(a).Parent.Name = "Sheet2" Then」で、シート名が「Sheet2」の場合だけ、削除するところです。

次のように、複数の名前の定義を設定しておきました。

複数の名前の定義を設定しておいた

複数の名前の定義を設定しておいた

Sheet1とSheet2に、ブック単位とシート単位の両方の、名前の定義を設定してあります。

では、VBAコードを実行してみます。

「Sheet2に定義された」名前の定義を削除

特定シートに定義された名前の定義を削除した結果

Sheet2に定義された名前の定義を、削除することができました。

ちょっと応用

実務で使う場合を考えてみました。

選択したセル範囲内の、名前の定義を削除する、というのをやってみます。

選択した範囲内の名前の定義を削除

選択したセル範囲内の名前の定義を削除するVBAコードは、こんな感じになります。

Sub TEST6()
    
    'ブック内の名前の定義で、ループ
    For Each a In ActiveWorkbook.Names
        '選択したセル範囲と、名前の定義の範囲が、一致した場合
        If Not Intersect(Range(a.RefersTo), Selection) Is Nothing Then
            a.Delete '名前の定義を削除
        End If
    Next
    
End Sub

ポイントは、名前の定義が、選択したセル範囲内にあるかを、「Intersect」を使って判定しているところです。

「名前1」~「名前8」の名前の定義を、設定しておきました。

複数の名前の定義を設定しておいた

名前1の名前の定義を設定
名前8の名前の定義を設定
名前の管理で確認

では、セルA3~セルA6を選択しておきます。

セル範囲を選択する

セル範囲を選択しておく

VBAコードを実行して、選択したセル範囲内の名前の定義を削除してみます。

「選択したセル範囲」の名前の定義を削除

選択したセル範囲内の名前の定義を削除した結果

選択したセル範囲内の名前の定義を、削除できました。

実務で使えるテクニックです。

おわりに

この記事では、名前の定義を削除する方法について、紹介しました。

名前の定義を削除するには、「Name.Delete」を使います。

名前の定義には、「ブック単位」や「シート単位」があります。

条件に応じて、「For Each」を使って名前の定義をループすると、自由に削除したい名前の定義を、削除することができます。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す