返回自定义对象Excel VBA

时间:2015-07-09 14:24:24

标签: excel vba excel-vba

我很难理解函数如何在Excel VBA中返回一个对象。

例如,在Java中,我习惯这样写:

Private ArrayList<> getARandomArrayList() {
    //... My code
    return anArrayList;
}

此方法应返回我可以使用的arrayList。

如果我在Excel中这样做,我相信它应该是这样的:

Function getARandomArrayList() As System.Collections.ArrayList
    '... My code
    getARandomArrayList = anArrayList
End Function

当我尝试使用这种功能时,我得到一个&#34;编译错误:未定义的用户定义类型&#34;错误窗口。如果我使用类型为Double或String的变量,我没有问题。只有对象才会出错。

2 个答案:

答案 0 :(得分:0)

根据您的需要,VBA.Collection可能适合您。 (编辑:正如文森特在评论中指出的那样,不需要额外的参考资料。)以下是使用它的看法:

Function getSomeCollection() As VBA.Collection
    'Declare a collection
    Dim newCollection As VBA.Collection

    'Initialize the collection
    Set newCollection = New VBA.Collection

    'Add a string. 
    'Other methods are Item (access by index), Count, and Remove (by index)
    newCollection.Add "hello"

    'Reference the collection (note it's 1-based)
    MsgBox newCollection(1)

    'Set the return value
    Set getSomeCollection = newCollection
End Function

答案 1 :(得分:0)

正如罗里所说:

  

您必须设置对相关对象库的引用,以便能够将变量声明为其中包含的类型

我进入参考并激活了系统库。