2012-02-17 155 views
0

新建構建VBA中的類模塊並努力填充另一個對象中定義的一個對象。VBA - 通過另一個對象(屬性集)訪問對象屬性

例如,我有兩個類模塊的Class1和等級2

的Class1

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

的Class2

Public FirstName As String 

這些是從一個標準模塊訪問如下:

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

你就近了。 的Class1:

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行調用Get屬性,而不是設置屬性):

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

感謝的細節,但你可以更好地解釋他們一點?我想我看到你所做的改變,爲什麼,但你能證實嗎?我看到: (1)使其他類對象私有 (2)您在對象的Set定義中傳遞對象本身(不確定如何可能,似乎無限遞歸,但顯然我錯過了某些東西) (3)「Get」函數只是將對象設置爲另一個類。 我在哪裏接近正確? – 2013-04-11 16:03:06

+0

我建議你用這些要求提出一個單獨的問題。 – assylias 2013-04-11 16:33:09