Excel VBAで特定のセルにアクセスするとき、名前の定義を使用すると便利です。
RangeやCellsで番地を指定した場合、行や列の挿入が行われた時、参照位置が動いてしまいます。
名前の定義を指定した参照の場合、行や列の挿入を行っても、参照位置が動きません。
ブック内の名前の定義が設定されているコードをご紹介します。
目次
コード
Dim n As Name Dim flag As Boolean flag = False For Each n In ActiveWorkbook.Name If n.Name = "名前の定義名" Then '名前の定義あり flag = True End If Next If flag = True Then '名前の定義あり Else '名前の定義なし End If
解説
For Each n In ActiveWorkbook.Name
Next
で、ブックに対して設定している名前の定義にアクセスすることができます。
アドレスを取得したい場合は、
For Each n In ActiveWorkbook.Name Msgbox Range(n.name).address Next
このような感じで、取得することができます。
このように、Rangeで名前を使用するとき、名前の定義が未設定だった場合、エラーになります。
動的に名前を生成して、アクセスする場合は、名前の定義が設定しているかチェックをしましょう。