Trim löscht führende und nachgestellte Leerstellen.
Mit Replace kannst Du alle entfernen.
Hier mal ein Vorschlag, wie Du es umsetzen könntest:
Code:
Sub Glaetten() ' Dim i As Integer i = 1
Do While Cells(i, 2) <> "" If IsNumeric(Cells(i, 1)) Then Cells(i, 1) = CDbl(Replace(Cells(i, 2).Value, " ", "")) Else Cells(i, 1) = Replace(Cells(i, 2).Value, " ", "") End If i = i + 1 Loop End Sub
Gruß Atilla
Folgende(r) 1 Nutzer sagt Danke an atilla für diesen Beitrag:1 Nutzer sagt Danke an atilla für diesen Beitrag 28 • Daniel.Haering
die Zahl ist für Excel durch den Trimbefehl ein Text. Anschließend versucht Excel, beim Eintrag in die Zelle daraus wieder eine Zahl zu machen. Da VBA "englisch" arbeitet, und im englischen das Komma ein Tausendertrennzeichen ist, werden die deutschen Tausendertrenner gesetzt.
Du kannst Excel wahrscheinlich auch ohne Replace austricksen:
Code:
Sub Glaetten() ' Dim i As Integer i = 1
Do While Cells(i, 1) <> "" If IsNumeric(Cells(i, 1).Value) Then Cells(i, 1).Value = Str(Trim(Cells(i, 1))) Else Cells(i, 1).Value = Trim(Cells(i, 1)) End If i = i + 1 Loop End Sub
. \\\|/// Hoffe, geholfen zu haben. ( ô ô ) Grüße, André aus G in T ooO-(_)-Ooo (Excel 97-2019+365)
Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:1 Nutzer sagt Danke an schauan für diesen Beitrag 28 • Daniel.Haering
vielen Dank für eure Hilfe - meine Lösung schaut jetzt so aus:
Code:
i = 1 j = 1 Do While Cells(i, j) <> "" Do While Cells(i, j) <> "" If IsNumeric(Cells(i, j).Value) Then Cells(i, j).Value = VBA.Str(VBA.Trim(Cells(i, j))) Else Cells(i, j) = VBA.Trim(Cells(i, j)) End If j = j + 1 Loop j = 1 i = i + 1 Loop
Damit gehe ich Zeile für Zeile nach unten bis eine leere Zeile erreicht wird (in Spalte A ist wenn dann immer text) und dann gehe ich so lange nach rechts bis die erste leere Spalte erreicht wird.