我正在使用VBA在Excel中编写一些函数。 这是我的代码:
Function PresentValue2()
Dim i As Double
i = 1
Dim coll As Collection
coll.add i
PresentValue2 = coll.Item(1)
End Function
我做了一个断点,解释器只停在指令coll.add i
处,函数返回值“#VALUE!”
为什么?
我在动态数组中添加了同样的问题
答案 0 :(得分:4)
集合是一个对象。您需要在使用它之前将其实例化。例如。 Dim col1 as Collection 设置col1 = New Collection 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
答案 1 :(得分:1)
您错过了设置:
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