从子函数中返回一个数组

时间:2014-06-10 18:01:14

标签: excel function vba excel-vba

我在某种程度上对excel VBA来说是新手,而且我会遇到一些非常简单的事情,我希望你能帮助我。

我有一个Sub(在这种情况下称为test()),我希望从我的函数ReturnArray()中获取一个数组。

但是当我尝试运行sub时,我得到的是“运行时错误'13':类型不匹配”。

先谢谢。

Function ReturnArray() As Variant
    Dim Accounts As Variant
    Accounts = Array(1, 2, 3, 4, 5, 6, 7, 8, 9,)

    ReturnArray = Accounts
End Function

Sub test()
    Dim acc() As Variant
    acc = ReturnArray
    Debug.Print acc
End Sub

1 个答案:

答案 0 :(得分:1)

Dim acc() As Variantacc声明为变种数组,但您要从ReturnArray函数返回单个变体。该单个变体恰好包含一个数组。但只是一个阵列。

Dim acc As Variant

现在说,你现在要在Debug.Print acc上得到运行时错误,因为你无法在一行上打印出整个数组。您需要遍历所有元素并一次打印一个元素。您可以使用Join函数将所有数组元素连接在一起,将所有数组元素转换为一个字符串:Debug.Print Join(acc, ",")