2017-08-25 90 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(東西)

相關問題