2012-02-17 14 views
0

VBAのクラスモジュールをビルドし、別のオブジェクト内で定義された1つのオブジェクトの作成に苦しんでいます。例えばVBA - 別のオブジェクト(プロパティセット)を介したオブジェクトプロパティへのアクセス

、私は2つのクラスモジュール、クラス1とクラス2を有する

Class1の

Dim mobj As Class2 
Public Property Set SetObj(obj As Class2) 
    Set mobj = obj 
End Property 

次のようにこれらは標準モジュールからアクセスされる

Public FirstName As String 

クラス2:

Sub test() 
Dim X As Class1 
Set X = New Class1 
Set X.SetObj = New Class2 
X.SetObj.FirstName = "Bruce" 
End Sub 

しかし、これはX.SetObj.FirstName = "Bruce"では "プロパティーメッセージの無効な使用"が発生すると失敗します。どんな支援も大歓迎です。

答えて

3

あなたは近くにいます。 クラス1:

Private mobj As Class2 
Public Property Set Obj(Obj As Class2) 
    Set mobj = Obj 
End Property 

Public Property Get Obj() 
    Set Obj = mobj 
End Property 

サブ(X.Obj.FirstNameラインが取得財産ではなく、設定プロパティを呼び出す):詳細については、

Sub test() 
    Dim X As Class1 
    Set X = New Class1 
    Set X.Obj = New Class2 
    X.Obj.FirstName = "Bruce" 
End Sub 
+0

おかげで、しかし、あなたは少しそれらをよりよく説明することができますか?私はあなたが行った変更を見ていると思うし、なぜ、あなたが確認することができますか?私は参照してください: (1)他のクラスのオブジェクトをプライベートにします (2)あなたはオブジェクトのセット定義にオブジェクトそのものを渡します(それが可能であるかどうかは確かではなく、無限に再帰的に見えますが、 ) (3) "Get"関数は、他のクラスとして設定されたオブジェクトを指すだけです。 どこに近づけても正しいですか? –

+0

あなたはこれらの点について別の質問をすることをお勧めします。 – assylias

関連する問題