We help IT Professionals succeed at work.

Excel Name goes away when set to empty string

koughdur
koughdur asked
on
73 Views
Last Modified: 2016-08-19
I have an Excel 2010 workbook with Names.  When I set a Name to the empty string it disappears.  Is this known behavior?  Is there a way to keep a name around with an empty string value or do I have to put some sort of dummy value in there?
Comment
Watch Question

Martin LissSocial distance - Don't touch your face - Wash your hands for 20 seconds
CERTIFIED EXPERT
Most Valuable Expert 2017
Distinguished Expert 2018

Commented:
Can you explain further what you mean when you say you "set a Name to the empty string"?

Author

Commented:
ThisWorkbook.Names("MyName").Value = ""
Martin LissSocial distance - Don't touch your face - Wash your hands for 20 seconds
CERTIFIED EXPERT
Most Valuable Expert 2017
Distinguished Expert 2018

Commented:
Ok, when a Name has to be attached to something so it makes sense that it would go away when it isn't. I don't know why you'd want to keep it around (can you explain?), but certainly assigning something to it would keep it.

Author

Commented:
I want to use Names rather than Globals to save values.  A blank string is a valid value that I would want to save.  Mostly I associate names with cells, but these values are not really associated with any particular worksheet or cell.
Martin LissSocial distance - Don't touch your face - Wash your hands for 20 seconds
CERTIFIED EXPERT
Most Valuable Expert 2017
Distinguished Expert 2018

Commented:
Ok, this is a workaround. Run the FindOut sub and it will tell you if the name exists. If it doesn't you can treat it like it's blank.

Function NameExists(nme As String) As Boolean
Dim n As Name

For Each n In Names
    If nme = n.Name Then
        NameExists = True
        Exit Function
    End If
Next

End Function
Sub FindOut()
If Not NameExists("MyName1") Then
    MsgBox "It's gone"
End If
End Sub

Open in new window

Author

Commented:
Thanks for the idea, but that will be rather cumbersome.  I'm using the Names to store previous values for a bunch of different cells.

When I was using globals I could just remember the values like this:

PrevValue = Range("MyCell").Value

and reset the cell later with the previous value like so:

Range("MyCell").Value = PrevValue

The problem with globals is that they go away if any of the macros error out.  Which means the user has to close and reopen the workbook in order for the globals to be recreated.  I was hoping that Names would stick around, but evidently Bill Gates is too smart for me and wants to save me space by getting rid of a perfectly good name just because it has an empty string in it.

What I'm going to do is find an obscure location on an obscure worksheet and store my Names associated with those cells then I can do this:

Worksheet("Obscure").Range("PrevValue") = Worksheet("Main").Range("MyCell").Value

and

Worksheet("Main").Range("MyCell").Value = Worksheet("Obscure").range("PrevValue")
Social distance - Don't touch your face - Wash your hands for 20 seconds
CERTIFIED EXPERT
Most Valuable Expert 2017
Distinguished Expert 2018
Commented:
This one is on us!
(Get your first solution completely free - no credit card required)
UNLOCK SOLUTION
CERTIFIED EXPERT

Commented:
...evidently Bill Gates is too smart for me and wants to save me space by getting rid of a perfectly good name just because it has an empty string in it.

This line of code...

    ThisWorkbook.Names("MyName").Value = "" 

...is not setting the Name value to an empty string. It is in fact the equivalent to the RefersTo property in that it refers to the formula (see here). So, while this...

   ThisWorkbook.Names("MyName").Value = "bob"

...looks like it sets the value to "bob", it actually sets the value to ="bob".

With this in mind, instead of using the Value property, how about using the Comment value? That can actually be an empty string and will be retained.

Author

Commented:
Martin:  Thanks.  I had forgotten about those.  I will look to see if I can implement, but I may go with Named cell ranges as that is what I am using for saving other values.

Wayne:  I am saving some stuff in comments, but there are issues with those as well.  They are a bit kludgy to get things in and out of and the show up as red triangles in the cells.  I'm actually thinking of moving away from those using Named cell ranges for those as well.
Martin LissSocial distance - Don't touch your face - Wash your hands for 20 seconds
CERTIFIED EXPERT
Most Valuable Expert 2017
Distinguished Expert 2018

Commented:
You're welcome and I'm glad I was able to help.

In my profile you'll find links to some articles I've written that may interest you.

Marty - Microsoft MVP 2009 to 2016
              Experts Exchange MVE 2015
              Experts Exchange Top Expert Visual Basic Classic 2012 to 2015

Gain unlimited access to on-demand training courses with an Experts Exchange subscription.

Get Access
Why Experts Exchange?

Experts Exchange always has the answer, or at the least points me in the correct direction! It is like having another employee that is extremely experienced.

Jim Murphy
Programmer at Smart IT Solutions

When asked, what has been your best career decision?

Deciding to stick with EE.

Mohamed Asif
Technical Department Head

Being involved with EE helped me to grow personally and professionally.

Carl Webster
CTP, Sr Infrastructure Consultant
Empower Your Career
Did You Know?

We've partnered with two important charities to provide clean water and computer science education to those who need it most. READ MORE

Ask ANY Question

Connect with Certified Experts to gain insight and support on specific technology challenges including:

  • Troubleshooting
  • Research
  • Professional Opinions
Unlock the solution to this question.
Join our community and discover your potential

Experts Exchange is the only place where you can interact directly with leading experts in the technology field. Become a member today and access the collective knowledge of thousands of technology experts.

*This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

OR

Please enter a first name

Please enter a last name

8+ characters (letters, numbers, and a symbol)

By clicking, you agree to the Terms of Use and Privacy Policy.