我已经在excel中使用VBA类模块已有一段时间了,但是我不确定是否正确创建了它们。我通常为类创建模块级变量,然后为属性let和get函数创建。例如:

Private msRegion As String

Property Get Region() As String
    Region = msRegion 'Return the Region
End Property

Property Let Region(ByVal sRegionName As String)
    msRegion = sRegionName 'Set the Region
End Property

当我查看本地窗口中的对象时,我注意到对于每个属性,我最终得到的是模块范围的变量和Let函数所需的变量。对我来说,这似乎是一个变量的重复。我担心如果我实例化了大量对象,每个对象中都有多个属性,这可能会浪费大量资源。

我试图修改代码,以便在对象类中只有一个变量,但是到目前为止,我只遇到了错误消息。

有人知道在类模块中创建不会导致重复变量的属性的方法吗?

编辑:

我刚刚再次查看了本地窗口,意识到不存在属性let的参数。这两个表达式似乎是私有(private)存储的变量,并且属性获得了值,在这种情况下为msRegion和Region。这符合Cor_Blimey的回答。

最佳答案

您是否尝试在调用该类的代码中获取或设置msRegion属性?如果这样做,您将注意到它不可调用。

您正在正确构造类(class)。

locals窗口显示所有已声明的变量,包括一个类中的私有(private)变量。

10-06 07:11