类方法不能使用同类的私有属性?

时间:2017-08-25 21:48:14

标签: vba excel-vba excel

我对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时,此编译正常。

2 个答案:

答案 0 :(得分:2)

"模型"在那条线上。 Model是一个全局变量,指向您类的某个特定实例。从那个对象,只有公共事物是可见的。

你想引用"内部"你的类的任意实例,所以只需删除Model前缀:

Private Sub SetuplngMarketID()

    lngMarketID = CLng(DefaultLogicOptions.textboxMarketID.Value)

End Sub

答案 1 :(得分:1)

您正在调用" Model.lngMarketId ",Model是您自己的对象中不可见的classModel对象变量的名称。

你必须使用" lngMarketId = Clng(某事)"