如何使用集合作为函数的参数? (无法理解我的代码返回值错误的原因)

时间:2018-03-19 09:47:20

标签: excel vba excel-vba collections

我很难通过集合获取函数作为执行任何操作的参数。

我有一个输出集合的函数

function ext(P as string) as collection
dim serv as new collection
serv.add P, "1"
set ext = serv
end function

我试图制作第二个功能,收集和吐出他们的第一个项目,但它不起作用

function first (C as collection) as string
first = C(1)
end function

所以当我打电话

first(ext("Apple"))

我应该得到" Apple" 但是我得到了一个值错误。

有谁知道为什么?

1 个答案:

答案 0 :(得分:0)

  

是否与我在excel单元格中键入内容有关?

是的,它与此有关。您无法通过工作表传递Collection,因此您需要将结构更改为以下内容:

Public Function first(P As String) As String
    first = ext(P)(1)
End Function

Private Function ext(P As String) As Collection
    Dim serv As New Collection
    serv.Add P, "1"
    Set ext = serv
End Function

在工作表上,您只需使用first功能:

=first("Apple")