在为 Excel 编写 VBA 宏时,我遇到了一些语法选项问题。在 VBA 中,您可以通过两种不同的方式调用对象上的方法:
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 的复杂性来解释为什么会发生这种情况?
编辑:非常感谢您的解释!