2017-09-19 68 views
0

我有一個類State,它裏面的一些子代碼以Scripting.Dictionary作爲參數。但是,當我嘗試在那裏傳遞字典時,出現wrong number of arguments or invalid property assignment錯誤。我無法弄清楚什麼是錯的。Excel vba:Class sub:參數的錯誤數量或vba的無效屬性分配

'Sub insite State class 
Sub addSecondItems(itemsDict As Object) 
    MsgBox ("start addSecondItems") 
End Sub 

Sub test() 
Dim stateCopy As State 
Set stateCopy = New State 
... 
Dim dict1 As Object 
Set dict1 = CreateObject("Scripting.Dictionary") 
stateCopy.addSecondItems (dict1) 'error here 
... 
End Sub 

同時

Sub testPetDict() 

    Dim petDict As Object 
    Set petDict = CreateObject("Scripting.Dictionary") 
    Call readPetDict(petDict) 

End Sub 

Sub readPetDict(petDict As Object) 
     Dim year As Integer 
     For year = 2014 To 2017 
      MsgBox (year & ". " & petDict(year)) 
     Next 
End Sub 

工作正常。

這裏有什麼可能是錯誤的,爲什麼第二種情況會起作用,而第一種情況會失敗?

+3

刪除括號:'stateCopy.addSecondItems dict1'或使用'調用' – Rory

+2

通過使用圓括號,您強制對象傳遞值,因此錯誤。 –

+0

@Rory謝謝你善良的人!你讓我從不可逆轉的絕望中解脫出來!你可能會發佈一個答案,我會批准它。 – Ans

回答

1

您應該刪除括號:

stateCopy.addSecondItems dict1 

或使用Call

Call stateCopy.addSecondItems(dict1) 

否則括號試着將其轉換字典中的值,通過調用其默認屬性,Item,這需要一個參數,因此是錯誤信息。

相關問題