我有一个子程序,它采用在用户表单中生成的变体数组,我想提取所有值并将它们作为单个逗号分隔的字符串返回。这可能是非常基本的,但我在将数组中的值获取到字符串时遇到问题。当我尝试将变体转换为字符串时,出现类型不匹配的情况。知道我做错了什么吗?
Sub formSearch(ParamArray search() As Variant)
Dim returnString As String
returnString = ""
For i = LBound(search) To UBound(search)
returnString = returnString + CStr(search(i)) + ","
Next
MsgBox returnString
End Sub
我遇到了同样的问题,因为输入数组是工作表上 NamedRange 的内容。
即使 NamedRange 是单列单元格,VBA 返回的数组也是一个 2 维 值数组,因此代码需要在 CStr 函数中进行 i,1 调整才能工作:
Function getCellArrayAsString(RangeName As String) As String
Dim arr() As Variant
getCellArrayAsString = ""
arr = ThisWorkbook.Names(RangeName).RefersToRange.value
For i = LBound(arr) + 1 To UBound(arr)
getCellArrayAsString = getCellArrayAsString & CStr(arr(i, 1)) & ","
Next
End Function
或者将其应用于OP的代码:
Sub formSearch(ParamArray search() As Variant)
Dim returnString As String
returnString = ""
For i = LBound(search) To UBound(search)
returnString = returnString + CStr(search(i,1)) + ","
Next
MsgBox returnString
End Sub
我怀疑你的代码也遇到了同样的问题,因为你的输入实际上是一个二维数组。