ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   What is default property of name object (https://www.excelbanter.com/excel-programming/392129-what-default-property-name-object.html)

clara

What is default property of name object
 
Hi all,
I can use
Range("A1:a3").Name = "data"
to define a name object.

but Range("A1:a3").Name will display the address of the name object

Could you explain why?

Clara


--
thank you so much for your help

Peter T

What is default property of name object
 
Hi Clara,

The default property of a Name is RefersTo, hence if the name refers to a
range returning the default property will return its address

Maybe you want this -

On error resume next
s = ""
s = Range("A1:a3").Name.Name
on error goto 0
If len(s) then
msgbox s & vbcr & Range("A1:a3").Name
else
msgbox "the range is not defined"
End if

Regards,
Peter T

"clara" wrote in message
...
Hi all,
I can use
Range("A1:a3").Name = "data"
to define a name object.

but Range("A1:a3").Name will display the address of the name object

Could you explain why?

Clara


--
thank you so much for your help




clara

What is default property of name object
 
Hi Peter,
Thank you very mcuh!
What I really mean is that there is an inconsistency here since we use
Range("A1:a3").Name = "data"( Set method) to assign a name, we can not
retrieve(Get) by referring to Range("A1:a3").Name

Clara
--
thank you so much for your help


"Peter T" wrote:

Hi Clara,

The default property of a Name is RefersTo, hence if the name refers to a
range returning the default property will return its address

Maybe you want this -

On error resume next
s = ""
s = Range("A1:a3").Name.Name
on error goto 0
If len(s) then
msgbox s & vbcr & Range("A1:a3").Name
else
msgbox "the range is not defined"
End if

Regards,
Peter T

"clara" wrote in message
...
Hi all,
I can use
Range("A1:a3").Name = "data"
to define a name object.

but Range("A1:a3").Name will display the address of the name object

Could you explain why?

Clara


--
thank you so much for your help





Peter T

What is default property of name object
 
Hi again,

I see what you mean but it's not really an inconsistency

say you did -
Set rng = [a1]
then
v = rng
v returns the default property of the range which is its value, not the cell
reference or its name if it has one.

If you are trying to return your range's name then you need to return the
Name property of the Name object.
As before -
On error resume next ' in case the range doesn't have a Name
s = ""
s = Range("A1:a3").Name.Name

similarly
set nm = activeworkbook.names("test")
s = nm.Name ' 'test

Regards,
Peter T


"clara" wrote in message
...
Hi Peter,
Thank you very mcuh!
What I really mean is that there is an inconsistency here since we use
Range("A1:a3").Name = "data"( Set method) to assign a name, we can not
retrieve(Get) by referring to Range("A1:a3").Name

Clara
--
thank you so much for your help


"Peter T" wrote:

Hi Clara,

The default property of a Name is RefersTo, hence if the name refers to

a
range returning the default property will return its address

Maybe you want this -

On error resume next
s = ""
s = Range("A1:a3").Name.Name
on error goto 0
If len(s) then
msgbox s & vbcr & Range("A1:a3").Name
else
msgbox "the range is not defined"
End if

Regards,
Peter T

"clara" wrote in message
...
Hi all,
I can use
Range("A1:a3").Name = "data"
to define a name object.

but Range("A1:a3").Name will display the address of the name object

Could you explain why?

Clara


--
thank you so much for your help







NickHK

What is default property of name object
 
Peter, Clara,

From Help:
Name property as it applies to the Font and Range objects.
Returns or sets the name of the object. The name of a Range object is a Name
object. For every other type of object, the name is a string. Read/write
Variant.
<This does not really help, as what does "the name of the object" mean in
this case ?

So, if a Name has been set for the range:
?typename(Range("A1").name)
Name

Which makes sense.
But then
Range("A1").name="Name1"
?Range("A1").Name.name
Name1
?names("name1").RefersTo
=Sheet3!$A$1

should not work, as the default property for a Name is RefersTo, but this is
clearly setting the Name.Name correctly.
It does seems some short-cut in the implementation, which, whilst useful,
can be confusing.

NickHK

"Peter T" <peter_t@discussions wrote in message
...
Hi again,

I see what you mean but it's not really an inconsistency

say you did -
Set rng = [a1]
then
v = rng
v returns the default property of the range which is its value, not the

cell
reference or its name if it has one.

If you are trying to return your range's name then you need to return the
Name property of the Name object.
As before -
On error resume next ' in case the range doesn't have a Name
s = ""
s = Range("A1:a3").Name.Name

similarly
set nm = activeworkbook.names("test")
s = nm.Name ' 'test

Regards,
Peter T


"clara" wrote in message
...
Hi Peter,
Thank you very mcuh!
What I really mean is that there is an inconsistency here since we use
Range("A1:a3").Name = "data"( Set method) to assign a name, we can not
retrieve(Get) by referring to Range("A1:a3").Name

Clara
--
thank you so much for your help


"Peter T" wrote:

Hi Clara,

The default property of a Name is RefersTo, hence if the name refers

to
a
range returning the default property will return its address

Maybe you want this -

On error resume next
s = ""
s = Range("A1:a3").Name.Name
on error goto 0
If len(s) then
msgbox s & vbcr & Range("A1:a3").Name
else
msgbox "the range is not defined"
End if

Regards,
Peter T

"clara" wrote in message
...
Hi all,
I can use
Range("A1:a3").Name = "data"
to define a name object.

but Range("A1:a3").Name will display the address of the name

object

Could you explain why?

Clara


--
thank you so much for your help








NickHK[_3_]

What is default property of name object
 
Peter,
Succintly put.
I'm glad (most of) the rest of the Object Model is more straight-forward.

NickHK

"Peter T" <peter_t@discussions bl...
I follow the confusion and to a certain extent the oddity

Range("A1").Name="Name1"
what are you actually setting ?


Not Set'ing but assigning a string name to the range's name-object
property
(the property always exists even if the name doesn't). This in turn adds
the
Name to the Names collection.

Regards,
Peter T

"NickHK" wrote in message
...
Peter,
Only that if you can do this to a non-default property of the Name
object,
ie. Name.Name
Range("A1").Name="Name1"
what are you actually setting ?

Small point, but I understand Clara's confusion.

NickHK

"Peter T" <peter_t@discussions wrote in message
...
Hi Nick,

Re this bit -

But then
Range("A1").name="Name1"
?Range("A1").Name.name
Name1
?names("name1").RefersTo
=Sheet3!$A$1

should not work, as the default property for a Name is RefersTo,

Don't see any confusion here or why it "should not work"

A Range object has a Name property which is a Name object, assuming the
range is named.

As you say, the default property of the Name object is RefersTo which
as
expected returns the string range reference (in the case of a range

name).
This subject to the max 255 limit (or a bit less) even though the
actual
defined range reference can be considerably more.

But a Name object also has a string Name property, similar to some
other
objects, hence objDefinedName.Name returns the name of the Name.

Regards,
Peter T


"NickHK" wrote in message
...
Peter, Clara,

From Help:
Name property as it applies to the Font and Range objects.
Returns or sets the name of the object. The name of a Range object is

a
Name
object. For every other type of object, the name is a string.

Read/write
Variant.
<This does not really help, as what does "the name of the object"
mean

in
this case ?

So, if a Name has been set for the range:
?typename(Range("A1").name)
Name

Which makes sense.
But then
Range("A1").name="Name1"
?Range("A1").Name.name
Name1
?names("name1").RefersTo
=Sheet3!$A$1

should not work, as the default property for a Name is RefersTo, but

this
is
clearly setting the Name.Name correctly.
It does seems some short-cut in the implementation, which, whilst

useful,
can be confusing.

NickHK

"Peter T" <peter_t@discussions wrote in message
...
Hi again,

I see what you mean but it's not really an inconsistency

say you did -
Set rng = [a1]
then
v = rng
v returns the default property of the range which is its value, not

the
cell
reference or its name if it has one.

If you are trying to return your range's name then you need to

return
the
Name property of the Name object.
As before -
On error resume next ' in case the range doesn't have a Name
s = ""
s = Range("A1:a3").Name.Name

similarly
set nm = activeworkbook.names("test")
s = nm.Name ' 'test

Regards,
Peter T


"clara" wrote in message
...
Hi Peter,
Thank you very mcuh!
What I really mean is that there is an inconsistency here since
we

use
Range("A1:a3").Name = "data"( Set method) to assign a name, we
can

not
retrieve(Get) by referring to Range("A1:a3").Name

Clara
--
thank you so much for your help


"Peter T" wrote:

Hi Clara,

The default property of a Name is RefersTo, hence if the name

refers
to
a
range returning the default property will return its address

Maybe you want this -

On error resume next
s = ""
s = Range("A1:a3").Name.Name
on error goto 0
If len(s) then
msgbox s & vbcr & Range("A1:a3").Name
else
msgbox "the range is not defined"
End if

Regards,
Peter T

"clara" wrote in message
...
Hi all,
I can use
Range("A1:a3").Name = "data"
to define a name object.

but Range("A1:a3").Name will display the address of the
name
object

Could you explain why?

Clara


--
thank you so much for your help



















All times are GMT +1. The time now is 05:36 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com