将变量数组值转换为 vba 中的字符串

问题描述 投票:0回答:1

我有一个子程序,它采用在用户表单中生成的变体数组,我想提取所有值并将它们作为单个逗号分隔的字符串返回。这可能是非常基本的,但我在将数组中的值获取到字符串时遇到问题。当我尝试将变体转换为字符串时,出现类型不匹配的情况。知道我做错了什么吗?

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
arrays string vba variant
1个回答
0
投票

我遇到了同样的问题,因为输入数组是工作表上 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

我怀疑你的代码也遇到了同样的问题,因为你的输入实际上是一个二维数组。

© www.soinside.com 2019 - 2024. All rights reserved.