我很难理解函数如何在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的变量,我没有问题。只有对象才会出错。
答案 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)
正如罗里所说:
您必须设置对相关对象库的引用,以便能够将变量声明为其中包含的类型
我进入参考并激活了系统库。