Home VBA Makro Beispiele Textbehandlungen VBA - Leerzeichen entfernen
VBA - Leerzeichen entfernen PDF Drucken E-Mail
Geschrieben von: Marcus Rose   
Samstag, 25. Juli 2009 um 09:07 Uhr

Es kann vorkommen, dass sich in einer Excel Tabelle, unerwünschte Leerzeichen befinden. Das passsiert oft, wenn man Daten importiert. Die Frage ist: Wie kann ich diese störenden Leerzeichen aus meiner Excel Tabelle entfernen? Und das natürlich ohne dass ich jede Zelle manuell bearbeiten muss.

Ich habe hier einmal verschiedene kleine Makros erstellt, welche euch vielleicht hilfreich sind. In Excel VBA gibt es z.B. den Befehl TRIM. Um diese Makros auszuprobieren erstellt ihr euch eine Tabelle wie diese:

 

 A
1Mar cus Ha t Ei nen Ba ll
2Mar cus Ha t Ei nen Ba ll
3Mar cus Ha t Ei nen Ba ll
4Mar cus Ha t Ei nen Ba ll
5Mar cus Ha t Ei nen Ba ll
6Mar cus Ha t Ei nen Ba ll
7Mar cus Ha t Ei nen Ba ll
8Mar cus Ha t Ei nen Ba ll
9Mar cus Ha t Ei nen Ba ll
10Mar cus Ha t Ei nen Ba ll

Nun müssen wir uns entscheiden wo wir die Leerzeichen entfernen möchten. Mit dem Befehl TRIM können wir die Leerzeichen links und rechts von unserer Eingabe entfernen:


Sub Leerzeichen_entfernen()
Dim i As Integer
For i = 1 To 10
    Cells(i, 1) = Trim(Cells(i, 1))
    'Leerzeichen werden links und rechts entfernt
Next
End Sub

Wollen wir nur die Leerzeichen links von unserer Eingabe löschen, so nutzen wir den Befehl LTRIM:


Sub Leerzeichen_entfernen()
Dim i As Integer
For i = 1 To 10
    Cells(i, 1) = LTrim(Cells(i, 1))
    'Leerzeichen werden Links entfernt
Next
End Sub

Man kann es sich fast denken ... wollen wir die Leerzeichen auf der rechten Seite entfernen, so nutzen wir den Befehl RTRIM:


Sub Leerzeichen_entfernen()
Dim i As Integer
For i = 1 To 10
    Cells(i, 1) = RTrim(Cells(i, 1))
    'Leerzeichen werden Rechts entfernt
Next
End Sub

Was ist nun aber, wenn wir alle Leerzeichen in den Zellen löschen möchten? Hier nutzen wir einen Code, welcher uns alle Leerzeichen ersetzt:

 

Sub Leerzeichen_entfernen()
Dim i As Integer
For i = 1 To 10
    Cells(i, 1).Replace What:=" ", Replacement:="", _
        LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False
    'alle Leerzeichen werden entfernt
Next
End Sub

 

Nun kann es aber sein, dass wir in unseren Zellen Leerzeichen haben, welche gar keine sind. Es kann sein, dass uns ein Code(160) in die Tabelle eingebaut wurde, welcher wie ein Leerzeichen ausschaut. In diesem Fall  nutzen wir den Befehl Substitute, welcher uns aus Excel als Wechseln bekannt ist.



Sub Leerzeichen_entfernen()
Dim i As Integer
For i = 1 To 10
    Cells(i, 1) = Application.WorksheetFunction.Substitute(Cells(i, 1), Chr(160), "")
    'Das Leerzeichen ist kein Leerzeichen, sondern ein Code(160)
    'Das merkt man auf den ersten Blick aber nicht. Hier wird
    'der Code(160) gegen nichts ausgewechselt
Next
End Sub

Ein Makro möchte ich euch hier abschließend noch zeigen. Schaut euch dazu noch einmal mein Beispiel an. Fällt euch auf, dass hier Leerzeichen mitten in den Wörtern sind? Mit dem letzten Makro möchte ich folgendes machen: Es sollen alle Leerzeichen innerhalb dieser Wörter gelöscht werden, aber ...

... folgt ein großgeschriebenes Wort, dann soll das Leerzeichen erhalten bleiben!

 


Sub Leerzeichen_entfernen()
Dim i As Integer
Dim Zeichen As Integer
    For i = 1 To 10
        For Zeichen = 1 To Len(Cells(i, 1))
        If Mid(Cells(i, 1), Zeichen, 1) = " " Then
            If LCase(Mid(Cells(i, 1), Zeichen + 1, 1)) = Mid(Cells(i, 1), Zeichen + 1, 1) Then
                Cells(i, 1) = Left(Cells(i, 1), Zeichen - 1) + Mid(Cells(i, 1), Zeichen + 1)
            End If
        End If
        Next
    Next
End Sub

Probiert es aus - es funktioniert wirklich.

Zuletzt aktualisiert am Samstag, 25. Juli 2009 um 09:46 Uhr
 
Copyright © 2017 ms-excel.eu. Alle Rechte vorbehalten.
 

Autoren - Login

Werbung

wichtige Links:
http://ms-excel.eu
Hier habt Ihr eine gute Excel Hilfe
Besucherstatistik
Besucher gesamt: 4.476.132
Besucher heute: 1.579
Besucher gestern: 1.981
Max. Besucher pro Tag: 4.488
gerade online: 12
max. online: 507
counter Statistiken