繁体   English   中英

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”)。

在 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

Enum不是 class... 它是一个声明。

  1. 请复制标准模块顶部的Enum声明(在声明区域):
Public Enum Alphabeth
    A = 1
    b = 2
    c = 3
End Enum
  1. 复制同一模块中的下一个Sub或另一个 Sub 并运行它:
Sub testEnumAlph()
   Debug.Print Alphabeth.A, Alphabeth.b, Alphabeth.c
End Sub

如果写 Alphabeth,intellisense 会建议 Enum 成员......

它将立即返回 Window( Ctrl + G ,在 VBE 中):1 2 3 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM