Excel

【Excel】VBAマクロで名前の定義の取得(値や参照範囲など各情報)する方法【Range, Names, For Each】

当サイトでは記事内に広告を含みます。

この記事では、VBAマクロで名前の定義の取得(値や参照範囲など各情報)し、別のシートに出力する方法について解説していきます。

ポイントとしては、`Range`オブジェクトと`Names`コレクション、そして`For Each`ループを使用することです。

マクロ初心者でも理解しやすいように、変数名を「aaaaa変数名aaaaa」といった形式で紹介します。適切な英語の変数名に置き換えてご利用ください。

それでは詳しく見ていきましょう!

 

VBAマクロでrenshuシート内の名前の定義の取得(値や参照範囲など各情報)し、betsuシートにシート名や値や参照範囲など、全ての情報を出力させる方法

それではまず、renshuシート内の名前の定義の取得について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。

Sub GetNamedRangesInSheet()
    Dim aaaaaSheetaaaaa As Worksheet
    Set aaaaaSheetaaaaa = ThisWorkbook.Sheets("renshu")

    Dim aaaaaOutputSheetaaaaa As Worksheet
    Set aaaaaOutputSheetaaaaa = ThisWorkbook.Sheets("betsu")
    Dim aaaaaRowCounteraaaaa As Long
    aaaaaRowCounteraaaaa = 1

    ' 名前付き範囲をループして情報を出力
    Dim aaaaaNamedRangeaaaaa As Name
    For Each aaaaaNamedRangeaaaaa In aaaaaSheetaaaaa.Names
        With aaaaaOutputSheetaaaaa
            .Cells(aaaaaRowCounteraaaaa, 1).Value = aaaaaNamedRangeaaaaa.Name
            .Cells(aaaaaRowCounteraaaaa, 2).Value = aaaaaNamedRangeaaaaa.RefersTo
            .Cells(aaaaaRowCounteraaaaa, 3).Value = aaaaaNamedRangeaaaaa.RefersToRange.Address
        End With
        aaaaaRowCounteraaaaa = aaaaaRowCounteraaaaa + 1
    Next aaaaaNamedRangeaaaaa
End Sub

 

コードのAlt+F8を押し、マクロ選択画面でGetNamedRangesInSheet関数を実行します。

このコードは、特定のシート(`renshu`)に存在する全ての名前定義(名前付き範囲)を取得し、その名前、参照式、および参照範囲の番地(座標:位置)を別のシート(`betsu`)に出力します。

ループを使用して各名前付き範囲を処理し、行ごとに情報を出力していますね。

 

VBAマクロでrenshuブックの全てのシートの名前の定義の取得(値や参照範囲など各情報)し、betsuシートにシート名や値や参照範囲など、全ての情報を出力させる方法

続いては、ワークブック内の全シートに対する名前の定義の取得について解説していきます。

Alt + F11にてVBE画面を開いて、以下コードをコピペしましょう。

Sub GetNamedRangesInWorkbook()
    Dim aaaaaSheetaaaaa As Worksheet
    Dim aaaaaOutputSheetaaaaa As Worksheet
    Set aaaaaOutputSheetaaaaa = ThisWorkbook.Sheets("betsu")
    Dim aaaaaRowCounteraaaaa As Long
    aaaaaRowCounteraaaaa = 1

    ' ワークブック内の全シートをループ
    For Each aaaaaSheetaaaaa In ThisWorkbook.Sheets
        ' 各シートの名前付き範囲をループして情報を出力
        Dim aaaaaNamedRangeaaaaa As Name
        For Each aaaaaNamedRangeaaaaa In aaaaaSheetaaaaa.Names
            With aaaaaOutputSheetaaaaa
                .Cells(aaaaaRowCounteraaaaa, 1).Value = aaaaaSheetaaaaa.Name
                .Cells(aaaaaRowCounteraaaaa, 2).Value = aaaaaNamedRangeaaaaa.Name
                .Cells(aaaaaRowCounteraaaaa, 3).Value = aaaaaNamedRangeaaaaa.RefersTo
                .Cells(aaaaaRowCounteraaaaa, 4).Value = aaaaaNamedRangeaaaaa.RefersToRange.Address
            End With
            aaaaaRowCounteraaaaa = aaaaaRowCounteraaaaa + 1
        Next aaaaaNamedRangeaaaaa
    Next aaaaaSheetaaaaa
End Sub

 

コードのAlt+F8を押し、マクロ選択画面でGetNamedRangesInWorkbook関数を実行します。

このコードはワークブック内の全てのシートをループし、それぞれのシート内の名前付き範囲の情報(シート名、名前、参照式、参照範囲のアドレス)を別のシート(`betsu`)に出力するものとなっています。

 

まとめ VBAで名前の定義の取得(参照範囲や位置:数値など各情報)する方法【Range, Names, For Each】

ここでは、VBAマクロで名前の定義の取得(値や参照範囲など各情報)する方法【Range, Names, For Each】について確認しました。

マクロをマスターしてさらに快適な生活を送っていきましょう。