2017-08-25 38 views
1

我对VBA类中的私有属性有什么误解?作为新手,我期望私有属性可以被同一类(模块)中的其他方法访问,但是在尝试编译时,我却得到了“找不到方法或数据成员”。类方法不能使用相同类的私有属性?


休息私有财产让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 

工程作为公共财产让lngMarketID

的“未找到方法或数据成员”凸显SetuplngMarketID行的.lngMarketID。当我将Private Property Let lngMarketID更改为Public Property Let lngMarketID时,编译得很好。

回答

2

这是该行的“模型”。 Model是一个全局变量,指向你的类的某个特定实例。从这个对象来看,只有公共事物是可见的。

您想从“内部”类的任意实例指的是,让刚落,型号前缀:

Private Sub SetuplngMarketID() 

    lngMarketID = CLng(DefaultLogicOptions.textboxMarketID.Value) 

End Sub 
1

要调用“Model.lngMarketId”,型号是名你自己的对象中不可见的classModel对象的变量。

你必须使用 “lngMarketId = CLNG(东西)

相关问题