我正在尝试编写一个接受数组作为参数的函数。该数组可以有任意数量的元素。
Function processArr(Arr() As Variant) As String
Dim N As Variant
dim finalStr as string
For N = LBound(Arr) To UBound(Arr)
finalStr = finalStr & Arr(N)
Next N
processArr = finalStr
End Function
这是我尝试调用该函数的方法:
Sub test()
Dim fString as string
fString = processArr(Array("foo", "bar"))
End Sub
我收到一条错误消息:
编译错误:类型不匹配:需要数组或用户定义的类型。
我做错了什么?
Array()
函数文档明确指出该函数返回 Variant
类型,但 VBA 是一个奇怪的地方。如果您声明一个数组变量,然后使用 Array()
设置它,然后将该变量传递到您的函数中,VBA 会很高兴。
Sub test()
Dim fString As String
Dim arr() As Variant
arr = Array("foo", "bar")
fString = processArr(arr)
End Sub
你的函数
processArr()
也可以写成:
Function processArr(arr() As Variant) As String
processArr = Replace(Join(arr()), " ", "")
End Function
如果您喜欢简洁。
你的函数在将其声明更改为此后对我有用......
Function processArr(Arr As Variant) As String
您也可以考虑像这样的
ParamArray
...
Function processArr(ParamArray Arr() As Variant) As String
'Dim N As Variant
Dim N As Long
Dim finalStr As String
For N = LBound(Arr) To UBound(Arr)
finalStr = finalStr & Arr(N)
Next N
processArr = finalStr
End Function
然后像这样调用函数...
processArr("foo", "bar")