【Excel VBA】名前の定義の有無を調べる

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で名前を使用するとき、名前の定義が未設定だった場合、エラーになります。

動的に名前を生成して、アクセスする場合は、名前の定義が設定しているかチェックをしましょう。

目次