Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1796to1800
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Leerzeichen vor Text löschen

Leerzeichen vor Text löschen
30.11.2020 14:47:57
Eisi
Hallo zusammen :-)
ich habe mir folgenden Code zusammen gebastelt, mit dem Ziel, dass das Leerzeichen vor dem Text am Anfang der Zelle gelöscht wird. Habe schon gemerkt, dass der Code funktioniert, aber er löscht leider alle Leerzeichen.
Es soll aber nur das erste Leerzeichen gelöscht werden.
Was muss am Code angepasst werden?
Vielen Dank für die Hilfe.
VG Eisi :-)
Sub Erstes_Leerzeichen_ersetzen()
Dim i As Integer            ' i = Platzhalter fuer die einzelnen Zeilen in der Schleife
Dim last As Integer         ' last = Letzte befuellte Zeile
last = Cells(Rows.Count, 4).End(xlUp).Row    ' Letzte befuellte Zeile in Spalte 4
For i = 2 To last              'Die Schleife laeuft ab Zeile 2 in Spalte 4 bis zur letzten  _
befuellten Zelle
Cells(i, 4).Value = Replace(Cells(i, 4).Value, " ", "")   'Hier werden alle Leerzeichen  _
geloescht
Next i                        'Die Schleife laeuft bis zur letzten befuellten Zeile
End Sub

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Leerzeichen vor Text löschen
30.11.2020 14:52:02
worti
Hallo Eisi,
versuch mal die Funktion LTrim
Gruß Worti
AW: Leerzeichen vor Text löschen
30.11.2020 14:59:59
Eisi
Danke Worti :-)
Aber warum braucht der Code so lange?
Ist da noch ein Fehler drin? Unter last habe ich ja die Spalte 4 schon beschrieben, unter Cells(i, 4).Va..... auch nochmal. Macht den Eindruck, als wäre das alles doppelt beschrieben?
AW: Leerzeichen vor Text löschen
30.11.2020 15:05:56
worti
Wie groß ist den deine Tabelle und wie viele Formeln enthält sie?
AW: Leerzeichen vor Text löschen
30.11.2020 15:11:41
Eisi
Eigentlich nur 1000 Zeilen und 33 Spalten ohne Formeln. Das ist eine nackte Datentabelle, die ich mir für meine eigene Auswertung anpassen möchte.
AW: Leerzeichen vor Text löschen
30.11.2020 15:14:42
volti
Hallo Eisi,
da schaltet man die Störfaktoren ab, dann sollte es schneller gehen.
Code:
[Cc]

Sub Erstes_Leerzeichen_ersetzen() Dim i As Integer Dim last As Integer With Application .ScreenUpdating = False .EnableEvents = False .Calculation = xlCalculationManual End With last = Cells(Rows.Count, 4).End(xlUp).Row For i = 2 To last Cells(i, 4).Value = LTrim(Cells(i, 4).Value) Next i With Application .ScreenUpdating = True .EnableEvents = True .Calculation = xlCalculationAutomatic End With End Sub

_________________________
viele Grüße aus Freigericht 😊
Karl-Heinz

Anzeige
AW: Leerzeichen vor Text löschen
30.11.2020 15:45:03
Eisi
Super, danke :-)
AW: Leerzeichen vor Text löschen
30.11.2020 15:16:11
Daniel
Hi
der Code braucht so lange, weil jedes Lesen und Beschreiben einer Zelle in Excel eine Reihe von Hintergrundaktionen auslöst, die einfach Zeit kosten und in der Schleife jedesmal wiederholt ausgeführt werden müssen.
einen Teil dieser Hintergrundaktionen kann man deaktivieren, dann läuft das ganze schon mal schneller ab.
Dazu such mal nach "GetMoreSpeed"
dort sollte beschrieben sein, welche Einstllungen du ändern musst, um den ablauf zu beschleunigen.
da das Ändern von Einstellungen immer eine kritische Sache ist (man sollte dem Anwender ja nichts verstellen) gibt es noch einen anderen Weg.
Dazu lädt man die Inhalte in ein Array, bearbeitet sie dort und schreibt dann das Array als ganzes zurück.
Eine Schleife über ein Array ist wesentlich schneller als eine Schleife mit Excelzellen, und beim Zurückschreiben des Arrays als ganzes werden die o.g. Hintergrundaktionen nur einmalig ausgeführt, so dass sie zeitlich nicht relevant sind.
das würde dann in etwa so aussehen und sollte ziemlich zügig sein:
Sub Erstes_Leerzeichen_ersetzen()
Dim arr
Dim i As Integer            ' i = Platzhalter fuer die einzelnen Zeilen in der Schleife
Dim last As Integer         ' last = Letzte befuellte Zeile
last = Cells(Rows.Count, 4).End(xlUp).Row
arr = range(cells(2, 4), cells(2, last)).value 'Werte ins Array lesen
For i = 1 To ubound(arr, 1)
arr(i, 1) = LTrim(arr(i, 1)
Next i
Range(Cells(2, 4), cells(2, last)).value = arr 'Array in Zellbereich zurückschreiben
End Sub
Gruß Daniel
Anzeige
AW: Leerzeichen vor Text löschen
30.11.2020 15:48:05
Eisi
Hallo Daniel,
beeindruckend, vielen herzlichen Dank für den Code.
VG Eisi :-)
AW: Leerzeichen vor Text löschen
30.11.2020 14:56:48
Eisi
Habe jetzt doch eine Lösung gefunden. Stellt sich nur die Frage, warum der Code so ewig braucht, bis alle Zeilen durch sind?
Sub Erstes_Leerzeichen_ersetzen()
Dim i As Integer
Dim last As Integer
last = Cells(Rows.Count, 4).End(xlUp).Row
For i = 2 To last
Cells(i, 4).Value = LTrim(Cells(i, 4).Value)
Next i
End 

Sub

314 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige