是否有办法强制使用模块名称进行全球会员资格认证?

时间:2015-07-01 12:36:26

标签: vba excel-vba excel

在VBA模块中,比如mdlModule,我可以阻止成员(SubFunction或变量),比如说SomeMember从外部全局可见将其标记为Private

如果我想在外部公开该成员,请将其标记为Public,然后我可以通过mdlModule.SomeMember访问该成员。

问题是我也可以使用SomeMember直接访问它,这会快速创建一堆全局可见的名称。

有没有办法强制确定全局可见成员的范围,以便SomeMember无法调用它,只有mdlModule.SomeMember

我可以使用类模块吗?

1 个答案:

答案 0 :(得分:2)

您可以使用TypeClass

  

在标准模块中声明类型

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