如何声明不是变量的类型

时间:2019-01-31 12:45:16

标签: excel vba list types enums

如何声明可以通过名称调用其已声明子代的类型?

类似这样的东西:

delphi:

TSuit = (Hearts, Diamonds, Clubs, Spades)

我想声明项目列表,它们不需要包含值,我可以在编写代码时调用该值,以使代码更易读和易于修改。

我尝试过,但是我不知道怎么做:

声明:

Public Enum EType
    square = 0
    triangle = 1
    circle = 2
End Enum

Public Sub LOK(line As Byte, SlType As EType)
    MsgBox ("test")
End Sub

致电:

LOK(1, square)

在VBA中甚至有可能吗?

2 个答案:

答案 0 :(得分:4)

circle似乎是保留的关键字,不能使用。如果将其更改为eCircle之类的东西,一切都会按预期运行。

Option Explicit

Public Enum EType
    eSquare = 0
    eTriangle = 1
    eCircle = 2
End Enum

Public Sub LOK(line As Byte, SlType As EType)
    MsgBox "test: " & SlType
End Sub

Sub test()
    LOK 1, eSquare
    LOK 1, eTriangle
    LOK 1, eCircle
End Sub

答案 1 :(得分:2)

运行TestMe,然后会出现消息框:

Public Enum EType
    square = 1
    triangle = 2
    kolelo = 3
End Enum

Public Sub LOK(line As Byte, SlType As EType)
    MsgBox ("test")
End Sub

Sub TestMe()
    LOK 1, square
End Sub

但是,如果您试图真正理解枚举的含义,例如打印“正方形”或“三角形”或“ kolelo”(圆圈是保留字),那么就没有简单直接的方法。

有关解决方法,请在此处查看解决方案-Is there a way to get the enums in VBA?