VBA:数组项目可以在数组本身内拆分吗?尝试给出“类型不匹配”错误

克里斯

我正在尝试在Excel中拆分数组本身内的数组项,但是一点都不运气。我想知道是否必须重新设置数组项,但同时我不确定这是否有意义或什至可行。我注意到的一件事是,数组项是数组中的string类型,我也怀疑这可能是Type Mismatch错误的根源-尽管数组是Dim“ ed as” variant

一个例子可以在这里看到:

Sub testarr()


    Dim arr As Variant, str As String, i As Integer

    str = "{test:[{test this here||Can it be split inside the array?}]}"

    arr = Split(str, "[{")

    For i = LBound(arr) To UBound(arr)
        arr(i) = Split(arr(i), "||")
    Next i
End Sub

数组的期望结构示例:

数组结构示例

斯托拉克斯

尽管将arr变暗,但只要您像为它们分配值一样,单个元素就会变成字符串类型。你可以做这样的事情

Sub testarr()


Dim arr As Variant, str As String, i As Integer
Dim v As Variant

    str = "{test:[{test this here||Can it be split inside the array?}]}"

    arr = Split(str, "[{")

    For i = LBound(arr) To UBound(arr)
        Debug.Print TypeName(arr(i))
        v = Split(arr(i), "||")
    Next i
End Sub

更新根据OP的评论,可以尝试用新的拆分后的数组替换原始数组。

Sub testarr()

Dim arr As Variant, str As String, i As Integer
Dim v As Variant, s As String

    str = "{test:[{test this here||Can it be split inside the array?}]}"

    arr = Split(str, "[{")

    For i = LBound(arr) To UBound(arr)
        'Debug.Print TypeName(arr(i))
        v = Split(arr(i), "||")
        s = s & "||" & Join(v, "||")
    Next i

    arr = Split(s, "||")

End Sub

更新2同样,基于OP的注释代码,它将返回OP帖子中描述的结构。

Sub testarr()

Dim arr As Variant, str As String, i As Integer
Dim v As Variant, s As String
Dim arr1 As Variant
Dim dic As New Scripting.Dictionary

    str = "{test:[{test this here||Can it be split inside the array?}]}"

    arr = Split(str, "[{")


    For i = LBound(arr) To UBound(arr)
       v = Split(arr(i), "||")
       If UBound(v) > 0 Then
           dic.Add i, v
       Else
           dic.Add i, arr(i)
       End If
    Next i



    ReDim arr1(dic.Count - 1)
    For i = 0 To dic.Count - 1
        arr1(i) = dic.Item(i)
    Next i

End Sub

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在VBscript中,尝试将数组列表中的每个项目拆分为单个数组时,出现类型不匹配错误

将函数拆分为数组。类型不匹配错误#13

VBA子调用给出“编译错误:类型不匹配:预期为数组或用户定义的类型”

无法解决 VBA 数组错误 13 类型不匹配

编译错误:ByRef匹配类型不匹配:如何在数组中调用值

尝试创建文件夹路径时,VBA拆分功能中的类型不匹配错误

Excel VBA数组类型不匹配

javascript从对象数组拆分为2个匹配和不匹配项目的数组

尝试切片多维数组时类型不匹配

带有数组的VBA Application.Index导致类型不匹配错误13

Excel VBA中的锯齿状数组,类型不匹配错误

类型不匹配错误,将字符串从数组(在VBA中)传递给函数

使用VBA与数组一起运行Unix命令会得到类型不匹配错误

VBA-带for循环和2D数组的类型不匹配错误

重试:在数组内匹配

JS无法在数组项目上调用函数

使用JavaScript在数组中快速分组项目

拆分数组而不在数组内创建数组的问题

拆分功能中的VBA类型不匹配

数组中的类型不匹配

致命错误nsarray元素与swift数组元素类型不匹配

Haskell:函数组合导致类型不匹配错误

Scala字节数组类型不匹配错误

VBA 过滤器函数在从范围创建的数组上引发“运行时错误 13:类型不匹配”错误

Robolectric在尝试初始化Activity Android时给出类型不匹配错误

尝试读取#NAME时?从Excel到字符串的值给出类型不匹配错误

字符串数组上的VBA“类型不匹配:预期为数组或用户定义的类型”

有条件的项目匹配数组项

对象数组:建议通过对象键或数组索引还是数组项目本身来选择特定项目?