Enum Names

  • Thread starter Thread starter Goofy
  • Start date Start date
G

Goofy

how can I retreive the string value of the enum internal identifier, in
other words if I have a value of 2 I want the corresponding "secondKey"


Public Enum MyEnum

firstKey = 1
secondKey = 2

End Enum
 
I don't believe that you can. Enum is used to declare a type for
enumeration, so you can declare a data type of that enumeration, or you can
use any of the member names within your code, but you can't go the other
way. You may have many such types, all with a member value of 2, so which
would it return.

--
HTH

Bob Phillips

(replace somewhere in email address with gmail if mailing direct)
 
Well, the enum groupname would be the way of resolving this. In
microsoft.NET you can reveal the name of the enum from the value within it.
 
Hi,

Check Chip Pearson's site.
http://www.cpearson.com/excel/download.htm

In particular the TLIUtils example.
"Provides VBA procedures for working with type libraries, via the
TypeLib Information object. Documentation of the available procedures is
available in the VBA code modules."

Cheers
Andy
 
As Bob says, these do not really exist in compiled code, as they have been
replaced with their values, the same as a Const is.
Not sure if this is strictly a correct example, but..
You can use them when you set a value :
ActiveCell.Borders(xlEdgeBottom).LineStyle = xlDashDot
but when retrieving the value :
?ActiveCell.Borders(xlEdgeBottom).LineStyle
4

not xlDashDot

Using Chip's method, you are querying the Type Library for the enum's value,
not the compiled code.

You can link the enum values to an arry of string though

Dim MyEnumString(1 to 2) as string

MyEnumString(firstKey)="firstKey"
MyEnumString(secondKey)="secondKey"

as long as you enum is compiled before your array elements are assigned.
Depends why you need to do this, as the actual name of the enum element does
not have any real meaning as it's only to aid your memory. It's the numeric
value that matters.

NickHK
 
Thanks


NickHK said:
As Bob says, these do not really exist in compiled code, as they have been
replaced with their values, the same as a Const is.
Not sure if this is strictly a correct example, but..
You can use them when you set a value :
ActiveCell.Borders(xlEdgeBottom).LineStyle = xlDashDot
but when retrieving the value :
?ActiveCell.Borders(xlEdgeBottom).LineStyle
4

not xlDashDot

Using Chip's method, you are querying the Type Library for the enum's
value,
not the compiled code.

You can link the enum values to an arry of string though

Dim MyEnumString(1 to 2) as string

MyEnumString(firstKey)="firstKey"
MyEnumString(secondKey)="secondKey"

as long as you enum is compiled before your array elements are assigned.
Depends why you need to do this, as the actual name of the enum element
does
not have any real meaning as it's only to aid your memory. It's the
numeric
value that matters.

NickHK
 

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

Back
Top