在VBA模块中,比如mdlModule
,我可以阻止成员(Sub
,Function
或变量),比如说SomeMember
从外部全局可见将其标记为Private
。
如果我想在外部公开该成员,请将其标记为Public
,然后我可以通过mdlModule.SomeMember
访问该成员。
问题是我也可以使用SomeMember
直接访问它,这会快速创建一堆全局可见的名称。
有没有办法强制确定全局可见成员的范围,以便SomeMember
无法调用它,只有mdlModule.SomeMember
?
我可以使用类模块吗?
答案 0 :(得分:2)
您可以使用Type
或Class
。
在标准模块中声明类型
Public Type SomeType
SomeMember As String
End Type
在类模块中声明名为 SomeClass
的类
Private m_someMember As String
Public Property Get SomeMember() As String
SomeMember = m_someMember
End Property
Public Property Let SomeMember(ByVal newValue As String)
m_someMember = newValue
End Property
如何在标准模块中使用
Sub TypeTest()
Dim x As SomeType
x.SomeMember = "Hi"
MsgBox x.SomeMember, vbInformation
End Sub
Sub ClassTest()
Dim y As SomeClass
Set y = New SomeClass
y.SomeMember = "Hello"
MsgBox y.SomeMember, vbInformation
End Sub