如何使用从函数返回的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