我在編寫Excel的VBA宏時遇到語法選項問題。在VBA中,你可以調用對象的方法有兩種不同的方式:語法選項在VBA Macro for Excel中創建錯誤
foo.bar(arg1, arg2)
或
foo.bar arg1, arg2
我絕對討厭第二類語法的,因爲我覺得它缺乏任何形式的清晰度,所以我通常堅持第一種選擇。但是,我遇到過使用第一個選項創建錯誤,而第二個執行正常的情況。 (這也許是在我的代碼其它問題的指標。)這是罪魁禍首代碼:
Function GetFundList() As Collection
Dim newFund As FundValues
Range("A5").Select
Set GetFundList = New Collection
While Len(Selection.Value)
Set newFund = New FundValues
' I set the fields of newFund and move Selection
的問題是在這下一行:
GetFundList.Add newFund
Wend
End Function
FundValues是我創建了一個類本質上只是一個結構;它有三個在循環過程中設置的屬性。
基本上,當我打電話GetFundList.Add(newFund)
我得到以下錯誤:
運行時錯誤「438」: 對象不支持此屬性或方法
但調用GetFundList.Add newFund
是完全正常的。
有沒有人瞭解VBA的錯綜複雜,足以解釋爲什麼會發生這種情況?
編輯:非常感謝解釋!
這將是正確的。在我VBA中,我通常會調用函數來返回執行例程的值和子集(如果您想將值分配給主子變量,仍然可以通過ref發送參數)。 Indd,如果您調用返回值的函數,則始終使用括號。 – Trace 2012-07-30 16:32:47
+1,但當天票數不足。 : - / – Gaffi 2012-08-13 16:15:44