[英]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.