How to know if cell has name

R

Rick S.

How can I test a cell for a Name, "activecell.name".
In my code below, it will generate an error if a cell is clicked that has no
".Name".
(Option Explicit assumed)

'======
Sub x()
'Begin Registry setting
'Notes:
'100% active on all cells clicked
sSpecLastWs = ActiveSheet.Name
SaveSetting appname:="ADM_Spec_Index", section:="WorkSheetNames", _
Key:="sSpecLastWs", setting:=sSpecLastWs
sSpecLastCell = ActiveCell.Name 'FAILS HERE
SaveSetting appname:="ADM_Spec_Index", section:="WorkSheetNames", _
Key:="sSpecLastCell", setting:=sSpecLastCell
'End Registry setting
End Sub
'======
--
Regards

VBA.Newb.Confused
XP Pro
Office 2007
 
G

Gary''s Student

Select a cell and run:

Sub nameit()
For Each n In ActiveWorkbook.Names
Set r = Range(n)
If Intersect(ActiveCell, r) Is Nothing Then
Else
MsgBox ("activecell " & ActiveCell.Address & " is part of " & n.Name)
Exit Sub
End If
Next
MsgBox ("activecell " & ActiveCell.Address & " is Nameless")
End Sub

It is important to remember that a cell can have its own name or be part of
a range with a name or be a part of several ranges with different names.
 
R

Rick S.

Gary, Thanks!
I definately did not know this:
"It is important to remember that a cell can have its own name or be part of
a range with a name or be a part of several ranges with different names."
--
Regards

VBA.Newb.Confused
XP Pro
Office 2007
 
R

Rick S.

With Gary's aid:
The macro appears to function like I think it should. ;)
'======
Sub x() 'for all other links
Dim r As Range
'Begin Registry setting
sSpecLastWs = ActiveSheet.Name
SaveSetting appname:="ADM_Spec_Index", section:="WorkSheetNames", _
Key:="sSpecLastWs", setting:=sSpecLastWs
Set r = Range(ActiveCell.Address)
If Intersect(ActiveCell, r) Is Nothing Then
Else
sSpecLastCell = ActiveCell.Name
SaveSetting appname:="ADM_Spec_Index", section:="WorkSheetNames", _
Key:="sSpecLastCell", setting:=sSpecLastCell
'End Registry setting
End If
End Sub
'======
--
Regards

VBA.Newb.Confused
XP Pro
Office 2007
 
D

Dave Peterson

If you really want to check to see if the activecell has its own name:

Dim myName As Name

Set myName = Nothing
On Error Resume Next
Set myName = ActiveCell.Name
On Error GoTo 0

If myName Is Nothing Then
MsgBox "no name"
Else
MsgBox ActiveCell.Address(0, 0) & vbLf & myName.Name
End If
 
P

Peter T

Don't see how that helps at all. Try this

Dim nm As Name

On Error Resume Next
Set nm = Nothing ' if necessary reset
Set nm = ActiveCell.Name
On Error GoTo 0

If nm Is Nothing Then
' not named, maybe name it
Debug.Print "not named"
Else
Debug.Print nm.Name, nm.RefersTo
End If

Regards,
Peter T
 
P

Peter T

What I should have done of course, had I seen it, was refer you to Dave's
earlier post, rather than repeat what he had already demonstrated !

Regards,
Peter T
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top