TextToColumns in VBA

Bild

Betrifft: TextToColumns in VBA
von: Senna
Geschrieben am: 11.06.2015 12:06:39

Hallo,
ich bin gerade auf ein Problem gestoßen, dass ich nicht ganz verstehe.
Wenn ich in einer Exceldatei manuell den Befehl "Text in Spalten" ausführe, dann macht Excel genau das was ich möchte. Jetzt möchte ich das aber automatisieren mit VBA.
In einer Spalte stehen Zahlen teilweise als Text formatiert. Dezimaltrennzeichen ist das Komma und Tausendertrennzeichen der Punkt. Nachdem ich mein Makro ausgeführt habe, ist das Dezimaltrennzeichen auf einmal der Punkt und die Zahl wird nicht als Zahl erkannt.
Hier mein Code:


    Columns("E:E").Select
    Selection.TextToColumns Destination:=Range("E:E"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 1), DecimalSeparator:=",", ThousandsSeparator:=".", TrailingMinusNumbers:= _
True

Im System ist ebenfalls der Punkt als Tausender- und das Komma als Dezimaltrennzeichen eingestellt.
Vielleicht kann mir ja einer von euch sagen wo mein Fehler liegt.

Bild

Betrifft: AW: TextToColumns in VBA
von: fcs
Geschrieben am: 11.06.2015 15:22:21
Hallo Senna,
das ist kein Fehler von dir sondern eine Eigenart VBA (I am American).
Leider schafft es Microsoft seit Jahren nicht, dass die VBA-Variante dieser Funktion genauso arbeitet wie die manuelle Ausführung des Befehls an der nationalen Benutzeroberfläche.
Hier bleibt nichts anderes über, als die Umwandlung Zellenweise per VBA durchzuführen.
Gruß
Franz

Sub aaText_to_Number()
  Dim Zelle As Range, Bereich As Range
  Dim wks As Worksheet
  Dim StatusCalc As Long
  
  With Application
    .ScreenUpdating = False
    StatusCalc = .Calculation
    .Calculation = xlCalculationManual
  End With
  
  Set wks = ActiveSheet
  With wks
    'Zellen mit Daten in Spalte E
    Set Bereich = .Range(.Cells(1, 5), .Cells(.Rows.Count, 5).End(xlUp))
    Bereich.NumberFormat = "General" 'oder das gewünschte Zahlenformat
    For Each Zelle In Bereich.Cells
      With Zelle
        If IsNumeric(.Value) Then .Value = CDbl(.Value)
      End With
    Next
  End With
  
  With Application
    .ScreenUpdating = True
    .Calculation = StatusCalc
  End With
End Sub


Bild

Betrifft: AW: TextToColumns in VBA
von: Senna
Geschrieben am: 12.06.2015 07:49:58
Hey Franz,
super das funktioniert einwandfrei. Vielen Dank für deine Hilfe :)
Gruß
Senna

 Bild

Beiträge aus den Excel-Beispielen zum Thema "mit SpecialCells Fehler finden"