0

我正在使用 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!”

这是为什么?

我用动态数组添加了同样的问题

4

2 回答 2

4

集合是一个对象。您需要在使用它之前对其进行实例化。例如 Dim col1 as Collection Set 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
于 2013-08-27T14:33:03.317 回答
1

您缺少一个Set

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
于 2013-08-27T14:33:30.890 回答