Excel VBA - Class 中的枚举
Excel VBA - Enumeration in Class
我对 Class 模块很陌生。
我知道如何在 Class 中进行枚举,
但是也可以参考它的值吗?
例如:
'Class Module
Public Enum Alphabeth
A = 1
B
C
End enum
假设我为此 Class 创建了一个名为 'Alpha' 的实例,
然后我可以以某种方式在枚举中引用“C”的值吗?
像 Alpha.myEnum.C 这样的东西(应该给出值“3”)。
Enum
不是 class... 这是一个语句。
- 请复制标准模块顶部的
Enum
声明(在声明区域):
Public Enum Alphabeth
A = 1
b = 2
c = 3
End Enum
- 复制同一模块中的下一个
Sub
,或复制另一个 运行 它:
Sub testEnumAlph()
Debug.Print Alphabeth.A, Alphabeth.b, Alphabeth.c
End Sub
如果写 Alphabeth,intellisense 会建议 Enum 成员...
它将 return 立即 Window (Ctrl + G
,在 VBE 中):1 2 3...
在 class 模块中:
Public Enum Alphabet
a = 1
b
c
End Enum
Public Property Get GetEnum(Letter As String) As Long
Select Case Letter
Case "a"
GetEnum = Alphabet.a
Case "b"
GetEnum = Alphabet.b
Case "c"
GetEnum = Alphabet.c
' etc
End Select
End Property
在常规模块中:
Sub UseEnum()
Dim Alphabet As clsAlphabet
Set Alphabet = New clsAlphabet
MsgBox Alphabet.GetEnum("a")
End Sub
编辑:
找到了更好的解决方案:
在 class 模块中:
Public Enum Alphabet
a = 1
b
c
End Enum
Public Property Get Alphabet(Letter As Alphabet) As Alphabet
Alphabet = Letter
End Property
在常规模块中:
Sub UseEnum()
Dim Alphabet As clsAlphabet
Set Alphabet = New clsAlphabet
MsgBox Alphabet.Alphabet(a)
End Sub
我对 Class 模块很陌生。
我知道如何在 Class 中进行枚举, 但是也可以参考它的值吗?
例如:
'Class Module
Public Enum Alphabeth
A = 1
B
C
End enum
假设我为此 Class 创建了一个名为 'Alpha' 的实例, 然后我可以以某种方式在枚举中引用“C”的值吗? 像 Alpha.myEnum.C 这样的东西(应该给出值“3”)。
Enum
不是 class... 这是一个语句。
- 请复制标准模块顶部的
Enum
声明(在声明区域):
Public Enum Alphabeth
A = 1
b = 2
c = 3
End Enum
- 复制同一模块中的下一个
Sub
,或复制另一个 运行 它:
Sub testEnumAlph()
Debug.Print Alphabeth.A, Alphabeth.b, Alphabeth.c
End Sub
如果写 Alphabeth,intellisense 会建议 Enum 成员...
它将 return 立即 Window (Ctrl + G
,在 VBE 中):1 2 3...
在 class 模块中:
Public Enum Alphabet
a = 1
b
c
End Enum
Public Property Get GetEnum(Letter As String) As Long
Select Case Letter
Case "a"
GetEnum = Alphabet.a
Case "b"
GetEnum = Alphabet.b
Case "c"
GetEnum = Alphabet.c
' etc
End Select
End Property
在常规模块中:
Sub UseEnum()
Dim Alphabet As clsAlphabet
Set Alphabet = New clsAlphabet
MsgBox Alphabet.GetEnum("a")
End Sub
编辑: 找到了更好的解决方案: 在 class 模块中:
Public Enum Alphabet
a = 1
b
c
End Enum
Public Property Get Alphabet(Letter As Alphabet) As Alphabet
Alphabet = Letter
End Property
在常规模块中:
Sub UseEnum()
Dim Alphabet As clsAlphabet
Set Alphabet = New clsAlphabet
MsgBox Alphabet.Alphabet(a)
End Sub