Excel VBA类模块内定义的枚举能否通过类实例引用其值
类模块内公共枚举访问规则解答
结论
不能通过类的实例访问类内部定义的公共枚举成员。VBA中类模块内定义的公共枚举属于类作用域下的公共类型,不属于实例的属性/成员,不需要实例化即可调用。
正确调用方式
假设你定义上述枚举的类模块命名为AlphaClass(即你创建类模块时设置的模块名称),直接通过类名调用即可拿到对应值:
' 无需创建类的实例,直接调用 Debug.Print AlphaClass.Alphabeth.C ' 输出结果为3
如果调用位置和类模块属于同一个VBA工程,也可以省略类名直接调用,不过更推荐带类名的写法,避免多模块存在同名枚举时出现命名冲突:
' 同工程下的简化写法,可读性较差不推荐 Debug.Print Alphabeth.C ' 同样输出3
错误写法说明
你提到的Alpha.myEnum.C这类通过实例调用枚举的写法不符合VBA语法规则,编译阶段就会触发「找不到方法或数据成员」的报错:
' 错误写法,无法正常运行 Dim Alpha As New AlphaClass Debug.Print Alpha.Alphabeth.C
内容的提问来源于stack exchange,提问作者Rezzy777
相关产品推荐
相关产品推荐

