2017-08-25 12 views
1

VBAクラスのプライベートプロパティについて私が誤解していることは何ですか?初心者として、私はプライベートプロパティが同じクラス(モジュール)内の他のメソッドにアクセスできると思っていましたが、代わりにコンパイルしようとすると「メソッドまたはデータメンバーが見つかりません。私有財産レッツ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 

:classModelという名前のこのクラスモジュールと

Option Explicit 

Public Model As classModel 

Set Model = New classModel 
Model.Setup 

公共プロパティレッツとして点の

作品は、「メソッドまたはデータメンバが見つかりません」がSetuplngMarketIDにラインの.lngMarketIDを強調

をlngMarketID。 Private Property Let lngMarketIDPublic Property Let lngMarketIDに変更すると、これは正常にコンパイルされます。

答えて

2

これはその行の「モデル」です。モデルは、クラスの特定のインスタンスを指すグローバル変数です。そのオブジェクトからは、公開されているものだけが表示されます。

あなたはこれだけモデルの接頭辞をドロップし、あなたのクラスの任意のインスタンス「内側」からそれを参照したい:

Private Sub SetuplngMarketID() 

    lngMarketID = CLng(DefaultLogicOptions.textboxMarketID.Value) 

End Sub 
1

あなたは「Model.lngMarketId」を呼び出している、モデル名です自分自身のオブジェクトには表示されないclassModelオブジェクトの変数の

あなたは "lngMarketId = CLNG(何かを)"

使用する必要があります
関連する問題