対象:Excel 2010, Excel 2013, Windows版Excel 2016
「excel vba 名前の定義からrangeオブジェクトを取得」
「excel vba names rangeオブジェクトを取得」
という検索キーワードでアクセスがありました。
定義された名前からRangeオブジェクトを取得するには、どのようなコードを書けばいいのか探していらしたのでしょう。
[スポンサードリンク]
定義された名前からRangeオブジェクトを取得するサンプルマクロ
以下のSubプロシージャが参考になるでしょう。
Sub 定義された名前からRangeオブジェクトを取得する()
Dim rng As Range
Set rng = Names("名前のサンプル").RefersToRange
MsgBox rng.Address(False, False)
End Sub
Dim rng As Range
Set rng = Names("名前のサンプル").RefersToRange
MsgBox rng.Address(False, False)
End Sub
「名前のサンプル」という名前を定義しておいてから、上記のSubプロシージャを実行すると、「名前のサンプル」が定義されているセル範囲のアドレスがメッセージボックスに表示されます。
サンプルマクロで利用しているオブジェクト式
オブジェクトブラウザー等で確認すればわかるとおり、NameオブジェクトのRefersToRangeプロパティを使うと、定義された名前のセル範囲を表すRangeオブジェクトを取得できます。
既にご紹介しているとおり、RangeオブジェクトのParentプロパティを使えば、セルの親オブジェクトであるWorksheetオブジェクトも取得できますから。
先のSubプロシージャのMsgBox関数部分を、
MsgBox _
rng.Address(False, False) & vbCrLf & _
rng.Parent.Name
とすれば、セルアドレスとシート名が表示されます。
[スポンサードリンク]
Home » エクセルマクロ・Excel VBAの使い方 » 定義された名前 » 名前からRangeオブジェクトを取得-Name.RefersToRange