Как вы получаете Range, чтобы вернуть его имя? - PullRequest
13 голосов
/ 02 сентября 2010
Dim sampleRange as Range
Set sampleRange = Worksheet.Range(Cells(1,1),Cells(1,4)
sampleRange.Name = "Range1"
MsgBox sampleRange.Name

Приведенный выше код покажет фактический адрес диапазона, а не имя. Почему?
Как мне получить именованный диапазон, чтобы вернуть его имя?

Ответы [ 2 ]

42 голосов
/ 02 сентября 2010

Для диапазона имя не является строкой, это объект имени, для которого вы затем берете свойство Name, чтобы получить строку:

MsgBox sampleRange.Name.Name
0 голосов
/ 18 марта 2017

sampleRange.Name = "Range1" для именования диапазона является плохой практикой

Это работает только потому, что Name (строка, содержащая "The Name") является свойством по умолчанию для Name.

Намного лучше sampleRange.Name.Name = "Range1"

Никогда не рекомендуется использовать свойство по умолчанию без явной ссылки на него.

Хорошее программирование точно контролирует среду, явно ссылаясь на свойствотребуется.

Устраняет двусмысленность, поскольку здесь возникла проблема.Устраняет проблему, созданную при изменении свойства по умолчанию в будущем обновлении.

...