web-dev-qa-db-ja.com

範囲にその名前を返すにはどうすればよいですか?

Dim sampleRange as Range
Set sampleRange = Worksheet.Range(Cells(1,1),Cells(1,4)
sampleRange.Name = "Range1"
MsgBox sampleRange.Name

上記のコードは、名前ではなく、範囲の実際のアドレスを示しています。どうして?
名前付き範囲を取得してその名前を返すにはどうすればよいですか?

16
GenericJam

Rangeの場合、Nameは文字列ではなく、Nameオブジェクトです。次に、のNameプロパティを使用して、文字列を取得します。

MsgBox sampleRange.Name.Name
50
Lance Roberts

sampleRange.Name = "Range1"で範囲に名前を付けるのはお勧めできません

Name(「TheName」を含む文字列)がNameのデフォルトのプロパティであるためにのみ機能します。

はるかに優れたsampleRange.Name.Name = "Range1"

明示的に参照せずにデフォルトのプロパティを使用することは決して良い習慣ではありません。

優れたプログラミングは、必要なプロパティを明示的に参照することにより、環境を正確に制御します。

ここで問題を作成したときのあいまいさを取り除きます。将来の更新でデフォルトのプロパティが変更された場合に発生する問題を排除します。

0
sirplus