エクセル 定義済の名前の管理で「Print_Area」以外を全て削除する(Excel VBA)

【本日のミッション】

Excel VBAで、定義済の名前の管理で「Print_Area」以外を全て削除せよ。

ミッションの概要

Excel VBAで、定義済の名前の管理で「Print_Area」以外を全て削除せよ、というのが今回のミッションです。


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

プロシージャ

Sub Print_Area以外の名前削除()
    Dim nm As Name
    '■Print_Area以外の名前削除
    For Each nm In ActiveWorkbook.Names
        If InStr(nm.Name, "Print_Area") = 0 Then
            nm.Delete
        End If
    Next nm
End Sub

For Each ステートメントとは

For Each ステートメントは、配列やコレクションの各要素に対して繰り返し処理を行う場合に使用します。

【構文】
Dim 変数 as オブジェクト型(バリアント型変数)
For Each 変数 In オブジェクトコレクション名(配列名)
    ***変数を使った処理***
Next

今回は、For Eachステートメントを使用して、ActiveWorkbook Namesコレクション 各要素(Name)を変数nm に順に格納し、If条件に合致するもののみ削除処理を行っています。

Dim nm As Name
For Each nm In ActiveWorkbook.Names
    If InStr(nm.Name, "Print_Area") = 0 Then 
        nm.Delete
    End If
Next nm
  1. 変数nmを、Nameで宣言します。
  2. ActiveWorkbookで定義している名前を順に変数nmに格納し、If条件に合致するもののみ削除しています。
    Data1 を削除

    Data2 を削除

    Data3 を削除

    名前1 を削除

    名前2 を削除

    名前3 を削除

  3. ActiveWorkbook の全ての Namesコレクション の処理が完了したら、For Each の処理を抜けます。
    名前に「Print_Area」を含むものだけ残っています。
■■■スポンサーリンク■■■

InStr関数

InStr([開始位置, ] 検索対象文字列, 検索ワード [, 比較モード])

検索対象文字列の中から 検索ワードを検索し、検索ワードが含まれる場合は、最初に見つかった位置を取得します。

開始位置には、何文字目から検索するかを指定します。省略可能で、省略した場合は先頭の文字から検索されます。
比較モードには、大文字と小文字を区別して検索するかを指定します。省略可能です。

定数説明
vbBinaryCompare全角半角、大文字小文字、ひらがなとカタカナが区別されます。(規定値)0
vbTextCompare全角半角、大文字小文字、ひらがなとカタカナが区別されません。1

今回は開始位置比較モードを省略しています。

検索対象文字列に名前の定義名「nm.Name」を、 検索ワードに「Print_Area」を指定しています。

InStr(nm.Name, "Print_Area")

nm.Nameが「Data1」の時は、検索ワード「Print_Area」を含まないため「0」を返します。

nm.Nameが「Sheet1!Print_Area」の時は、検索ワードPrint_Area」を含むため、開始位置「8」を返します。

参照

AutoFilter オートフィルター 1列に OR条件で2つの条件指定(Excel VBA)
AutoFilter オートフィルター 1列に AND条件 で2つの条件指定(Excel VBA)
AutoFilter オートフィルター 1列に OR条件 で 3つ以上 の条件指定(Excel VBA)
AutoFilter オートフィルター 複数列に 2つの条件指定(Excel VBA)
AutoFilter オートフィルター 複数列に 3つ以上の条件指定(Excel VBA)
エクセル 指定した色のカラーインデックスを取得し、同じ色のセルを色フィルターで抽出する(Excel VBA)
エクセル 入力した文字色のカラーインデックスを取得し、同色文字のセルを色フィルターで抽出する(Excel VBA)
離れた複数列をまとめて列番号(数字)で選択する方法(Excel VBA)
Excel VBA で選択した複数のセルにデータ・数式を(Ctrl+Enter のように)一気に入力する方法
エクセル 定義済の名前の管理を一括で全て削除する(Excel VBA)
エクセル 定義済の名前の管理で「Print_Area」以外を全て削除する(Excel VBA)

■■■スポンサーリンク■■■