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... 这是一个语句。

  1. 请复制标准模块顶部的 Enum 声明(在声明区域):
Public Enum Alphabeth
    A = 1
    b = 2
    c = 3
End Enum
  1. 复制同一模块中的下一个 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