VBA枚举无效限定符

时间:2016-05-29 15:48:27

标签: excel-vba enums vba excel

我正在编写一些代码来与我公司的在线时间表系统进行交互。我想使用枚举或类似的东西来存储网站元素的值,以使它们更容易更改或访问。我尝试使用限定符引用这些枚举中的成员,但是获取了无效的限定符错误消息。我可以在没有限定符的情况下引用枚举,但这会删除我使用它们的推理。有没有办法解决?

'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

2 个答案:

答案 0 :(得分:2)

定义时:

import React from 'react'

...然后dim del as delUser 可以使用del的其中一个值,因此它就像Enum delUser - 它没有类似结构的数据类型。所以这种语法 - 似乎表明Integer具有成员属性 - 确实无效:

del

可以这样做:

MsgBox del.User

...将显示47。

替代数据结构:集合

也许你正在寻找别的东西。例如,您可以使用del = delUser.User ' You assign the value 47 MsgBox del

Collection

替代数据结构:类

收藏品仍然有局限性。您可以查看类,您可以使用它来创建具有所需属性的(用户)对象。

通过一些示例here了解它。

然后,您需要创建类模块(与工作表和工作簿代码分开),为其提供一个名称(让我们说" clsUser"),以及提供属性。一个非常简单的看起来像这样:

Dim del As New Collection

del.Add 47, "User"
del.Add 50, "ID"

MsgBox del("User") ' 47

然后在原始模块中,您可以编写如下内容:

Private sUserName As String

Property Let UserName(name As String)
    sUserName = name
End Property

Property Get UserName() As String
    UserName = sUserName
End Property

答案 1 :(得分:0)

枚举非常有限,dim del as delUser基本上使del成为一个vanilla Long类型变量(因此没有属性或方法,因此当您尝试使用点时出现错误)与& #34;提示"编译器,其假定包含枚举delUser中的值。我说应该因为没有任何类型检查,唯一真正的好处是声明的清晰度和智能感知支持。

如果您希望User的值从枚举本身读取它:MsgBox delUser.User