508 Aufrufe
Gefragt in Tabellenkalkulation von oskar92 Einsteiger_in (51 Punkte)
Hallo,

ich bekomme gelegentlich Excel-Tabellen die ich vor Weiterbearbeitung zunächst von überflüssigen Leerzeichen säubern möchte. Dazu habe ich folgendes kleines Makro:

Sub LeerzeichenEntfernen()
Dim Zelle As Range
Application.ScreenUpdating = False
 For Each Zelle In ActiveSheet.UsedRange
   Zelle.Value = Trim(Zelle.Value)
 Next Zelle
 Application.ScreenUpdating = True
End Sub

Trotz des ScreenUpdating=False flackert der Mauszeiger auf dem Monitor und ich empfinde auch die Dauer der Ausführung ungewöhnlich lang. Kann man an dem Makro etwas verbessern?

Vielen Dank im Voraus

Oskar

2 Antworten

+1 Punkt
Beantwortet von beverly_ Experte (3.3k Punkte)
ausgewählt von oskar92
 
Beste Antwort

Hi Oskar,

du durchläufst ALLE Zellen, gleichgültig ob sie etwas enthalten oder nicht. Außerdem sollen Leerzeichen gelöscht werden, gleichgültig ob eins vorhanden ist oder nicht - das alles dauert natürlich seine Zeit. Man kann das verkürzen, indem man nur die Zellen prüft, die einen fix eignetragenen Inhalt haben und dann außerdem noch einschränken, ob das 1. bzw. letzte Zeichen ein Leerzeichen ist:

Sub LeerzeichenEntfernen()
    Dim rngZelle As Range
    Application.ScreenUpdating = False
    For Each rngZelle In ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)
        If Left(rngZelle, 1) = " " Or Right(rngZelle, 1) = " " Then _
            rngZelle.Value = Trim(rngZelle.Value)
    Next rngZelle
    Application.ScreenUpdating = False
End Sub


Bis später, Karin

0 Punkte
Beantwortet von oskar92 Einsteiger_in (51 Punkte)
Danke Karin,

läuft super.

Schönen Sonntag noch

Oskar
...