2017-06-18 39 views
1

假設我有類似"1-34-52"的東西,我想將它們拆分成一個數組,但是,當Test1工作時,它會給我一個String()類型的數組。如何將"1-34-52"中的數字轉換爲Long()類型的數組?我可以在VBA中使用redim數組的類型嗎?如何在Excel VBA中將字符串拆分爲long()類型的數組?

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 
+1

第一個問題我看到的是你是不是把一個分隔符在分裂的語句,將其更改爲'斯普利特(「1-34-52 「,」 - 「)'。其次,當我使用元素時,我只是使用CLng:'TypeName(CLng(arr(0)))' –

+0

這裏是一個帖子,其中有人有類似的情況與整數... https://stackoverflow.com/questions/ 19121595/convert-saved-string-of-numbers-into-an-array-of-integers –

+0

https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem – Slai

回答

0

您可以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 

也會起作用。

0

您可以遍歷數組和填充一個新問題:

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