2017-06-18 1 views
1

Lassen Sie uns sagen, ich habe etwas wie "1-34-52", ich möchte sie in ein Array zu teilen, aber während Test1 funktioniert, gibt es mir eine String() Art Array. Wie setze ich die Zahlen in "1-34-52" in ein Long() Array? Kann ich redim Art eines Arrays in VBA?Wie teile ich die Zeichenfolge in Excel VBA in ein Long() - Array?

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

erste Frage, die ich sehen, ist Sie kein Trennzeichen in Ihre Split-Anweisung setzen, ändern Sie ihn auf 'Split (" 1-34-52 "," - ")'. Zweitens würde ich nur CLng verwenden, wenn ich das Element verwende: 'TypeName (CLng (arr (0)))' –

+0

Hier ist ein Post, wo jemand eine ähnliche Situation mit ganzen Zahlen hatte ... https: //stackoverflow.com/questions/ 19121595/convert-saved-string-of-numbers-in-ein-array-of-integers –

+0

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

Antwort

0

Sie können Redim ein Array von Variants. Da Varianten ganzzahlige Werte halten kann, ist es kein Problem:

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 

Hinweis:

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 

wird auch funktionieren.

0

Sie können Schleife durch das Array und füllen Sie eine neue:

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 
Verwandte Themen