この記事では、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】について確認しました。
マクロをマスターしてさらに快適な生活を送っていきましょう。