目次
あらすじ
今回の投稿では、 Excel (エクセル)の「名前の定義」機能を VBA で操作するテストを行ってみたいと思います。名前の定義と定義済み範囲の取得を行ってみます。
「名前の定義」を設定
Step.1
以下のようなワークシートを準備してみました。ワークシート「Sheet1」のセル「A1:A3」の範囲に A,B,C と入力されています。
次のステップでこの範囲の「名前」を定義してみたいと思います。

Step.2
その前に現在の「名前の定義」状況を見てみたいと思います。エクセルツールバー > 挿入 > 名前 > 定義 で現在定義されている範囲の名前を見てみます。

「名前の定義」ダイアログが表示されました。名前の定義はされていないようです。

Step.3
それでは、 Excel VBA のマクロで「名前の定義」を行ってみたいと思います。以下のマクロを実行してみます。
Sub 名前の定義の設定テスト()
ThisWorkbook.Names.Add Name:="AtoC", RefersTo:="=Sheet1!$A$1:$A$3" '現在のワークブックに「AtoC」という名前の定義を追加します。参照範囲は「Sheet1」の「A1:A3」です。
End Sub
Step.4
そうすると、名前の定義に「AtoC」の定義が追加されています。

日本語の名前を定義
定義する名前は日本語でも設定可能なようです。
以下のマクロを実行してみます。
「AからC」という日本語を含んだ名前を定義しています。
Sub 名前の定義の設定テスト2()
ThisWorkbook.Names.Add Name:="AからC", RefersTo:="=Sheet1!$A$1:$A$3" '日本語の名前を定義しています。
End Sub
「名前の定義」ダイアログで結果を見てみると、「AからC」という名前が追加されています。

名前の定義を取得
Step.1
次は、「名前の定義」で定義したセル範囲を取得してみたいと思います。
以下のマクロを実行してみます。
「AtoC」の参照範囲のアドレスを取得して、ダイアログボックスに表示してみます。
RefersToRange プロパティで Range オブジェクトを取得しています。
Sub 名前の定義の取得テスト()
MsgBox ThisWorkbook.Names("AtoC").RefersToRange.Address '「AtoC」のアドレスを取得してダイアログボックスに表示してみます。
End Sub
Step.2
そうすると、以下の画像のような結果になりました。
上の方で定義しておいた、「A1:A3」のセル範囲が取得できました。
テスト環境
- Windows 10
- Microsoft Office Excel 2003
あとがき
名前の定義は、私の場合は、今まで使う機会がなかったですが、見たことのないプロパティだったので少し調べてみました。
以上閲覧ありがとうございました。