如何声明可以通过名称调用其已声明子代的类型?
类似这样的东西:
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中甚至有可能吗?
答案 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?