在类模块中有
Private Enum colType ID = "A" SSN = "B" lName = "H" fName = "G" End Enum
作为私人会员.每当类初始化时,我都会收到 Compile Error:Type Mismatch消息.如果我宣布colType
为Private Enum coltype As String
.这会突出显示为红色错误,我收到编译错误:预期的语句结束消息.
在excel VBA中指定枚举元素的值是不允许的?
正如评论中所写,这是不可能的.虽然我过去使用过,但仍有可能的解决方法.有:
Private Enum colType ID = 1 SSN = 2 lName = 3 fName = 4 End Enum
然后创建一个单独的String属性,例如:
Public Property Get colType_String(colType) as String Dim v as Variant v= Array("A","B", ...) colType_String = vba.cstr(v(colType)) End Property
这不是最通用的解决方案,但它很容易实现,它可以完成工作......如果你已经在类模块中使用了这个,你甚至可以在私有colType变量上使用属性,并且不需要将colType输入到财产.
在某些情况下,我非常喜欢前人的解决方案,因此我赞成了它.更经常提出的解决方案如下:
Enum myEnum myName1 = 1 myName2 = 2 myName3 = 3 End Enum Function getEnumName(eValue As myEnum) Select Case eValue Case 1 getEnumName = "myName1" Case 2 getEnumName = "myName2" Case 3 getEnumName = "myName3" End Select End Function
Debug.Print getEnumName(2) prints "myName2"