如何使用函数返回的字符串数组?

时间:2015-10-28 09:48:11

标签: arrays excel vba excel-vba

我有一个返回string array

的函数
Function getAr() As String
Dim tmpAr(3) As String
getAr(0) = "Hallo"
getAr(1) = "I"
getAr(2) = "Am"
getAr(3) = "I"
getAr = tmpAr
End Function

Sub我想重新分配返回的字符串数组,如

Sub test()
Dim tmpAr() As String
ReDim tmpAr(UBound(getAr))
Debug.Print tmpAr(0)
Debug.Print tmpAr(1)
End Sub

错误是

  

无法分配数据字段。

我想这是因为我必须将strAr标注到与myfunc arry相同的维度。但我只是没有得到这些信息。

有人可以帮我吗?

2 个答案:

答案 0 :(得分:3)

你的功能和子都需要改变:

Function getAr() As String()
    Dim tmpAr(3)              As String
    tmpAr(0) = "Hallo"
    tmpAr(1) = "I"
    tmpAr(2) = "Am"
    tmpAr(3) = "I"
    getAr = tmpAr
End Function

Sub test()
    Dim tmpAr()               As String
    tmpAr = getAr
    Debug.Print tmpAr(0)
    Debug.Print tmpAr(1)
End Sub

答案 1 :(得分:2)

您不需要知道分配数组的维度,但您的代码不正确。

这是我的修正版:

Function getAr() As String()

Dim tmpAr(3) As String

tmpAr(0) = "Hallo"
tmpAr(1) = "I"
tmpAr(2) = "Am"
tmpAr(3) = "I"

getAr = tmpAr
End Function

注意String(),这就是你如何声明返回数组的函数的类型。

此外,您正在标注tmpAr并试图影响未设置的getAr值,并且在您开始时,使用您将分配给的临时变量更容易操作结束时函数的输出。

您的ReDim ReDim tmpAr(UBound(getAr))正在运行,但没有通过数组,这是您如何做到的tmpAr = getAr,您甚至不需要先使用ReDim! ;)

Sub test()
Dim tmpAr() As String
tmpAr = getAr

Debug.Print tmpAr(0)
Debug.Print tmpAr(1)

End Sub