我对 VBA 类中的私有(private)属性有什么误解?作为新手,我希望同一类(模块)中的其他方法可以访问私有(private)属性,但在尝试编译时却得到“找不到方法或数据成员”。
作为私有(private)属性(property)让 lngMarketID 中断
这是我的标准模块中的内容:
Option Explicit
Public Model As classModel
Set Model = New classModel
Model.Setup
这个类模块名为 classModel:
Option Explicit
Private plngMarketID As Long
'plngMarketID Properties
Public Property Get lngMarketID() As Long
lngMarketID = plngMarketID
End Property
Private Property Let lngMarketID(ByVal lngMarketID As Long)
plngMarketID = lngMarketID
End Property
Public Sub Setup()
SetuplngMarketID
End Sub
Private Sub SetuplngMarketID()
Model.lngMarketID = CLng(DefaultLogicOptions.textboxMarketID.Value)
End Sub
作为公共(public)属性(property)让lngMarketID工作
“找不到方法或数据成员”突出显示 SetuplngMarketID
中的行的 .lngMarketID
。当我将 Private Property Let lngMarketID
更改为 Public Property Let lngMarketID
时,编译效果很好。
最佳答案
这是该行中的“模型”。模型是一个全局变量,指向类的某个特定实例。从该对象中,只有公共(public)事物是可见的。
您想从类的任意实例“内部”引用它,因此只需删除模型前缀即可:
Private Sub SetuplngMarketID()
lngMarketID = CLng(DefaultLogicOptions.textboxMarketID.Value)
End Sub
关于vba - 类方法不能使用同一个类的私有(private)属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45889812/