我对VBA课程中的私有属性有什么误解?作为一个新手,我希望私有属性可以被同一个类(模块)中的其他方法访问,但是在尝试编译时我得到“找不到方法或数据成员”。
打破私有财产让lngMarketID
以下是我在标准模块中的内容:
timePicker.setIs24HourView(DateFormat.is24HourFormat(getContext()));
使用这个名为classModel的类模块:
Option Explicit
Public Model As classModel
Set Model = New classModel
Model.Setup
作为公共财产工作让lngMarketID
“未找到方法或数据成员”突出显示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
中该行的.lngMarketID
。当我将SetuplngMarketID
更改为Private Property Let lngMarketID
时,此编译正常。
答案 0 :(得分:2)
"模型"在那条线上。 Model是一个全局变量,指向您类的某个特定实例。从那个对象,只有公共事物是可见的。
你想引用"内部"你的类的任意实例,所以只需删除Model前缀:
Private Sub SetuplngMarketID()
lngMarketID = CLng(DefaultLogicOptions.textboxMarketID.Value)
End Sub
答案 1 :(得分:1)
您正在调用" Model.lngMarketId ",Model是您自己的对象中不可见的classModel对象变量的名称。
你必须使用" lngMarketId = Clng(某事)"