VBA口译员显然没有理由停下来

时间:2013-08-27 14:23:42

标签: excel vba excel-vba

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

为什么?

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

2 个答案:

答案 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