VBA解释器显然没有理由停下来

我正在使用VBA在Excel中写入一些函数。 这是我的代码:

Function PresentValue2() Dim i As Double i = 1 Dim coll As Collection coll.add i PresentValue2 = coll.Item(1) End Function 

我做了一个断点,并且interiter停在coll.add i指令coll.add i ,函数返回值“#VALUE!”。

这是为什么?

我添加dynamic数组相同的问题

集合是一个对象。 在使用它之前,你需要实例化它。 例如Dim col1 as Collection Set col1 =新build集合col1.add“item”

考虑到你的函数似乎想“坚持”的价值,并检查它,这仍然会导致问题,因为你每次调用这个方法实例化一个新的集合。 你需要在你的函数之外声明和实例化集合,并像这样使用它

 Dim col1 as New Collection Function PresentValue2 as Double Dim i as Double i = 1 col1.add i 'rest of your code here and return value '.... End Function 

你错过了一套

 Function PresentValue2() Dim i As Double i = 1 Dim coll As Collection Set coll = New Collection coll.Add i PresentValue2 = coll.Item(1) End Function