How do you get a Range to return its Name?
Asked Answered
E

1

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

The above code will show the actual address of the range, not the name. Why?
How do I get a named range to return its name?

Elzaelzevir answered 2/9, 2010 at 19:27 Comment(0)
D
69

For a Range, Name isn't a string it's a Name object, that you then take the Name property of to get the string:

MsgBox sampleRange.Name.Name
Danaedanaher answered 2/9, 2010 at 19:38 Comment(5)
Not Sure to edit the answer safely, but I think in VBA7.1, the answer does not apply : pls read MsgBox sampleRange.Names.Name instead.Darreldarrell
@hornetbzz, Names is a collection for the Workbook or Application. Name is a "name" object of a range for which you then take the "name" property.Danaedanaher
@Lance: yes thx, this is my confusion btwn Collection, Objects and Ranges, so depending on how sampleRange is set.Darreldarrell
and in case someRang.Name does not exist (the above would throw an error), one could test it using error handling functionality, e.g. based on these nice functions GetNamedRange and IsNamedRange: ozgrid.com/forum/forum/help-forums/excel-general/…Geanine
sampleRange.Name = "Range1" to name the range is poor practice It only works because Name (the string containing "The Name") is the default property of Name. Much better sampleRange.Name.Name = "Range1" It's never good practice to use the default property without referring to it explicitly. Good programming exactly controls the environment by referring explicitly to the property required. Removes ambiguity as created the issue here. Eliminates the issue created if the default property is changed in a future updateGebler

© 2022 - 2024 — McMap. All rights reserved.