如何使用从函数返回的string数组?

我有一个函数返回一个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我想重新分配返回的string数组

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

错误是

分配给数据字段是不可能的。

我想这是因为我必须将strAr尺寸strAr为与myfunc strAr相同的尺寸。 但是我不知道这些信息。

有人可以帮我吗?

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

这是我的修改版本:

 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() ,这是如何声明返回数组的函数的types。

此外,你是维度tmpAr并试图影响值getAr没有设置,并且在开始时,使用一个临时variables,您将在操作结束时分配给函数的输出更容易。

而你的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 

你的function和子function都需要改变:

 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