大体でIT
大体でIT
2021/1/24
Excel VBAで、名前の定義を削除する方法について、ご紹介します。名前の定義を削除するには、「Name.Delete」を使います。削除したい名前の定義に応じて、「For Each」を使うと、自由に名前の定義を削除することができます。
この記事では、名前の定義を削除する方法について、ご紹介します。
名前の定義を削除するには、「Name.Delete」を使います。
名前の定義には、「ブック単位」や「シート単位」があります。
条件に応じて、「For Each」を使って名前の定義をループすると、自由に、削除したい名前の定義を、削除することができます。
では、名前の定義を削除する方法について、解説していきます。
VBAで、名前の定義を削除する方法について、解説します。
名前の定義を削除するには、「Name.Delete」を使います。
「Worksheets(シート名).セル.Name.Delete」
Sub TEST1()
'名前の定義を削除
ActiveSheet.Cells(1, 1).Name.Delete
End Sub
セルA1に「名前1」という名前の定義をしておきました。
セルA1に名前の定義を設定しておいた
では、VBAコードを実行して、名前の定義を削除してみます。
名前の定義を削除
セルA1に定義された「名前1」を、削除できました。
こんな感じで、セル範囲がわかっていれば、名前の定義を削除するのは、簡単です。
次に、名前の定義を設定したセル範囲がわからない状態で、名前の定義を削除する、というのをやってみます。
VBAで、全ての名前の定義を削除するというのをやってみます。
名前の定義は、「ブック単位」や「シート単位」がありますので、次のパターンで、全ての名前の定義を削除してみます。
「ブック内の全て」の名前の定義を削除
「ブック単位」の名前の定義を削除
「シート単位」の名前の定義を削除
「特定シート」の名前の定義を削除
まずは、「ブック内の全て」の名前の定義を削除してみます。
Sub TEST2()
'ブック内の名前の定義で、ループ
For Each a In ActiveWorkbook.Names
a.Delete '名前の定義を削除
Next
End Sub
次のように、複数の名前の定義を設定しておきました。
複数の名前の定義を設定しておいた
Sheet1とSheet2に、ブック単位とシート単位の両方の、名前の定義を設定してあります。
「ブック内の全て」の名前の定義を削除
ブック内の全ての名前の定義を、削除することができました。
次に、「ブック単位」の名前の定義を削除してみます。
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に、ブック単位とシート単位の両方の、名前の定義を設定してあります。
「ブック単位」の名前の定義を削除
ブック単位の名前の定義を、削除することができました。
次は、「シート単位」の名前の定義を削除してみます。
Sheet2のシート単位に定義された名前を、削除するVBAコードです。
Sub TEST4()
'シートの名前の定義で、ループ
For Each a In Worksheets("Sheet2").Names
a.Delete '名前の定義を削除
Next
End Sub
ポイントは、「Worksheets("Sheet2").Names」で、ループしているところです。
次のように、複数の名前の定義を設定しておきました。
複数の名前の定義を設定しておいた
Sheet1とSheet2に、ブック単位とシート単位の両方の、名前の定義を設定してあります。
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に、ブック単位とシート単位の両方の、名前の定義を設定してあります。
「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」の名前の定義を、設定しておきました。
複数の名前の定義を設定しておいた
セル範囲を選択する
VBAコードを実行して、選択したセル範囲内の名前の定義を削除してみます。
「選択したセル範囲」の名前の定義を削除
選択したセル範囲内の名前の定義を、削除できました。
この記事では、名前の定義を削除する方法について、紹介しました。
名前の定義を削除するには、「Name.Delete」を使います。
名前の定義には、「ブック単位」や「シート単位」があります。
条件に応じて、「For Each」を使って名前の定義をループすると、自由に削除したい名前の定義を、削除することができます。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。