AW: FieldInfo als Variant
29.05.2009 17:31:10
fcs
Hallo Volker,
die FieldInfo muss in einem 2-spaltigen Array zur Verfügung stehen.
Dies geht mit Schleifen zum Beispiel auch so.
Gruß
Franz
Sub aaSpaltenSplit()
Dim intcolbreit, aktblatt As String
Dim intI As Long, txtArray()
aktblatt = ActiveSheet.Name
intcolbreit = Split(Sheets(aktblatt).Range("A1"), ",")
ReDim txtArray(LBound(intcolbreit) To UBound(intcolbreit), 0 To 1)
For intI = LBound(intcolbreit) To UBound(intcolbreit)
txtArray(intI, 0) = Val(intcolbreit(intI))
Select Case Val(intcolbreit(intI))
Case 0, 10
txtArray(intI, 1) = 1 'Standard
Case 5
txtArray(intI, 1) = 2 'Text
Case 19
txtArray(intI, 1) = 4 'Datum TMJ
Case Else
txtArray(intI, 1) = 1 'Standard
End Select
Next
With Sheets(aktblatt)
.Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).TextToColumns _
Destination:=Range("A1"), _
DataType:=xlFixedWidth, _
FieldInfo:=txtArray, _
TrailingMinusNumbers:=True
End With
End Sub
'oder auch
Sub aaSpaltenSplit_var()
Dim intcolbreit, aktblatt As String
Dim intI As Long, txtArray()
Dim intcolTyp
aktblatt = ActiveSheet.Name
intcolbreit = Split(Sheets(aktblatt).Range("A1"), ",")
intcolTyp = Array(1, 2, 1, 4, 1, 1, 1)
ReDim txtArray(LBound(intcolbreit) To UBound(intcolbreit), 0 To 1)
For intI = LBound(intcolbreit) To UBound(intcolbreit)
txtArray(intI, 0) = Val(intcolbreit(intI))
txtArray(intI, 1) = intcolTyp(intI)
Next
With Sheets(aktblatt)
.Range(.Cells(1, 1), .Cells(.Rows.Count, 1).End(xlUp)).TextToColumns _
Destination:=Range("A1"), _
DataType:=xlFixedWidth, _
FieldInfo:=txtArray, _
TrailingMinusNumbers:=True
End With
End Sub