我正在编写一些代码来与公司的在线时间表系统交互。我想使用Enums或类似的东西来存储网站元素的值,以使它们更易于更改或访问。我试图使用限定符引用这些枚举中的成员,但收到无效的限定符错误消息。我可以在不使用限定符的情况下引用这些枚举,但是这消除了我使用它们的理由。有没有办法解决?
'Add initial user
Public Enum FirstUser
User = 47
ID = 50
pass1 = 56
pass2 = 59
logBtn = 67
backbtn = 133
MenuChanged = 138
logOut = 141
End Enum
'Delete user
Public Enum delUser
User = 21
UserBtn = 43
Ok = 46
After = 58
End Enum
Sub mySub()
dim del as delUser
msgbox del.User
End Sub
最佳答案
定义时:
dim del as delUser
...
del
可以采用Enum delUser
的值之一,因此它就像Integer
一样-它没有类似结构的数据类型。因此,这种语法(似乎暗示del
具有成员属性)确实是无效的:MsgBox del.User
你可以这样做:
del = delUser.User ' You assign the value 47
MsgBox del
...将显示47。
备用数据结构:收集
也许您在寻找其他东西。例如,您可以使用
Collection
:Dim del As New Collection
del.Add 47, "User"
del.Add 50, "ID"
MsgBox del("User") ' 47
备用数据结构:类
集合仍然有局限性。您可以研究类,这些类可用于创建具有所需所有属性的(用户)对象。
通过一些示例here进行阅读。
然后,您需要创建一个类模块(与工作表和工作簿代码分开),为其提供一个名称(例如“ clsUser”),并提供属性。一个非常简单的示例可能如下所示:
Private sUserName As String
Property Let UserName(name As String)
sUserName = name
End Property
Property Get UserName() As String
UserName = sUserName
End Property
然后,在原始模块中,您可以编写如下内容:
Dim u As clsUser
Dim u2 As clsUser
Set u = New User();
u.UserName = "Sarah";
Set u2 = New User();
u2.UserName = "John";
MsgBox u.UserName & ", " & u2.UserName;