2013-05-21 59 views
2

我正在編寫代碼,應該從Excel工作表讀取數據,將其保存爲字符串包含在我定義的類的對象中的變量中,然後添加此對象到我已經定義的類的對象樹。vba錯誤438但對象類包含子

Dim ProdTreeMain As New CProdTree 
Dim nR As Range 
Dim nnR As Range 
Set nR = oXS.Range("A1") 
Set nnR = oXS.Range("A1") 
dim r as integer 
r = 1 

Do While Not (nR.Text = "" And nnR.Text = "") 
    If CONDITION IS TRUE: 

     Dim currProd As New CProduct 

     ProdTreeMain.addProduct (currProd) '<-- error 438 "Object doesn't support property or method 

    End If 
    r = r + 1 
    Set nR = oXS.Range("A" & CStr(r + 1)) 
    Set nR = oXS.Range("A" & CStr(r + 2)) 

Loop 

類CProdTree包含一個子「addProduct命令」,其通過引用採取類CProduct的輸入對象。

Public Sub addProduct(ByRef Prod As CProduct)

這到底是怎麼回事?該類是定義的,子正確的,變量類型被傳遞給子是正確的類,但我得到這個錯誤...:/

+2

您需要刪除參數兩邊的括號。 [Here's](http://dailydoseofexcel.com/archives/2012/05/01/quick-vba-tip-parentheses/)我最喜歡的解釋。 –

+0

@Doug:你應該做出答案。 –

+0

@MitchWheat,完成。謝謝。 –

回答

3

你需要放棄圓括號周圍的參數。我最喜歡的解釋是這個Daily Dose of Excel post

這條線:

ProdTreeMain.addProduct (currProd) 

變爲:

ProdTreeMain.addProduct currProd 
+0

+1。接得好。 –

+0

@MitchWheat,謝謝你充實我的答案。這有點稀疏! –

+0

@Doug格蘭西和米奇小麥 我曾嘗試過,但我得到相同的錯誤:/ – user2405738