如何在Excel VBA中将string拆分为long()types的数组?

比方说我有类似"1-34-52"东西,我想将它们拆分成一个数组,然而,当Test1工作的时候,它给了我一个String()types的数组。 我怎么把"1-34-52"的数字放到Long()types的数组中? 我可以在VBA中redimtypes的数组吗?

 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 

您可以重新Redim一组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 

注意:

 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 

也将工作。

你可以遍历数组并填充一个新数组:

 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