简体   繁体   English

如何在Excel VBA中将字符串拆分为long()类型数组?

[英]How do I split the string into a long() type array in Excel VBA?

Let's say I have something like "1-34-52" , I want to split them into an array, however, while Test1 works, it gives me an String() type array. 假设我有类似"1-34-52"东西,我想把它们分成一个数组,但是,当Test1工作时,它给了我一个String()类型的数组。 How do I put the numbers in "1-34-52" into a Long() type array? 如何将"1-34-52"的数字放入Long()类型数组中? Can I redim type of an array in VBA? 我可以在VBA中redim数组类型吗?

Sub Test1()
    Dim arr As Variant
    arr = Split("1-34-52", "-")
    Debug.Print TypeName(arr), TypeName(arr(0))
End Sub

Sub Test2()
    Dim arr() As Long
    arr = Split("1-34-52") 'You get type mismatch error
End Sub

You can Redim an array of Variants . 您可以Redim一组Variants Since Variants can hold integer values, there is no problem: 由于Variants可以保存整数值,因此没有问题:

Sub dural()
    ary = Split("1-34-52", "-")
    ReDim lary(0 To UBound(ary))
    For i = 0 To UBound(ary)
        lary(i) = CLng(ary(i))
    Next i
End Sub

Note: 注意:

Sub dural()
    ary = Split("1-34-52", "-")
    Dim lary() As Long
    ReDim lary(0 To UBound(ary))
    For i = 0 To UBound(ary)
        lary(i) = CLng(ary(i))
    Next i
End Sub

will also work. 也会工作。

You can loop through the array and populate a new one: 您可以遍历数组并填充一个新数组:

Sub Test1()
    Dim arr As Variant, LongArr() As Long, X As Long
    arr = Split("1-34-52", "-")
    ReDim LongArr(UBound(arr))
    For X = LBound(arr) To UBound(arr)
        LongArr(X) = CLng(arr(X))
    Next
    Debug.Print TypeName(arr), TypeName(arr(0))
    Debug.Print TypeName(LongArr), TypeName(LongArr(0))
End Sub

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM