嵌套VB(VBA)枚举

时间:2011-05-12 22:00:22

标签: class vba enums enumeration

好的,好吧,我想实现嵌套枚举的效果,以便轻松分组一些常量字符串。像伪代码一样:

Enum gKS
    Colby = "Hello"
    Hays = "World"
end Enum

Enum gMA
    Dodge = "Seven"
    Muscatine = "Ports"
end Enum

Enum gCountry
    north as gMA
    south as gKS
end Enum

Public USA as gCountry

因此,下面的代码应输出“”消息:

sub dol()
    msgbox USA.north.Dodge
end sub

我不想使用类型或类,因为不需要初始化,因为所有值都是已知的(正如我所说的那样)。

有什么建议吗?

THX。

3 个答案:

答案 0 :(得分:3)

类是继续这样做的方法。枚举只是长值,需要有限的选择。这将允许您的对象具有最大的灵活性,以防您需要这些对象具有其他函数/ subs。

这是一个简单的布局:

gCountry Class:

Public North As gMA
Public South As gKS

Private Sub Class_Initialize()
    Set North = New gMA
    Set South = New gKS
End Sub

gKS课程:

Public Property Get Colby() As String
    Colby = "Hello"
End Property

Public Property Get Hays() As String
    Hays = "World"
End Property

gMA课程:

Public Property Get Dodge() As String
    Dodge = "Seven"
End Property

Public Property Get Muscatine() As String
    Muscatine = "Ports"
End Property

测试它:

Public Sub TestIt()

    Dim USA As New gCountry

    MsgBox USA.North.Dodge
End Sub

答案 1 :(得分:2)

我不相信你能够以你希望的方式做嵌入式枚举,因为枚举在CLR中被认为是原始的(source)。你也可以试着在整个内部嵌入int。

我意识到你说你不想使用类,但这是静态类填充.NET世界的情况。无需初始化即可轻松随意访问,编译时可快速访问。 This page如果您不熟悉它们,可以获得有关静力学的更多信息。您应该能够做任何您需要做的事情,以便在该类中按照您想要的方式设置信息,无论是多个静态类,哈希表,多维数组,还是您拥有的任何内容。

答案 2 :(得分:1)

THX,

因此。我决定使用类型来解决这个问题:

    Public Type fCAOCC
        itRGI As String
        ...
    End Type
    Public Type fCAOBF
        itRGI As String
        ibEnviar As String
        ...
    End Type
    Public Type gTELAS
        CAOBF As fCAOBF
        CAOCC As fCAOCC
        ...
    End Type

    Public CSI As gTELAS

    Sub iniGLOBALS()
        CSI.CAOBF.itRGI = "DIVNRRGILIG"
        CSI.CAOBF.ibEnviar = "DUMMYNAME1"
        CSI.CAOCC.itRGI = "Hello"
...
    End Sub

这准备好以后用于代码......

孢霉素A