我有一个返回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相同的维度。但我只是没有得到这些信息。
有人可以帮我吗?
答案 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