24.11.2018, 11:40 (Dieser Beitrag wurde zuletzt bearbeitet: 24.11.2018, 11:59 von TomKra.)
Hallo liebe Gemeinschaft,
in meiner Tabelle befinden sich in Spalte E unterschiedlich lange Texte. Darin sind zum Teil manuelle Zeilenumbrüche (Alt+Enter oder Zeichen(10)) und überzählige Leerzeichen enthalten.
Wie müsste ein Makro aussehen, das über "wechseln" und "glätten" alle Zeilenumbrüche und Leerzeichen in Spalte E entfernt und die Zeilenhöhe automatisch einstellt?
An was könnte es liegen, dass in einer Zelle bei automatischer Zeilenhöhe unter dem Text noch eine leere Zeile in der Zelle angezeigt wird? Manchmal verschwindet die leerer Zeile nachdem ich alle Zeilenumbrüche in der Zelle entfernt habe und manchmal nicht. Manchmal reicht es auch, die Spaltenbreite um 1 Pixel zu vergrößern. Dann stimmt es aber ja in anderen Zeilen nicht mehr.
vielen Dank für Deinen Tipp. Könntest Du mir bitte etwas genauer erklären, was ich mit TRIM und Replace machen soll? Soweit ich herausgefunden habe, sind das nur die englischen Begriffe für wechseln und glätten, die ich ja bereits gefunden hatte.
24.11.2018, 20:34 (Dieser Beitrag wurde zuletzt bearbeitet: 24.11.2018, 20:34 von LCohen.)
(24.11.2018, 11:40)TomKra schrieb: An was könnte es liegen, dass in einer Zelle bei automatischer Zeilenhöhe unter dem Text noch eine leere Zeile in der Zelle angezeigt wird? Manchmal verschwindet die leerer Zeile nachdem ich alle Zeilenumbrüche in der Zelle entfernt habe und manchmal nicht. Manchmal reicht es auch, die Spaltenbreite um 1 Pixel zu vergrößern. Dann stimmt es aber ja in anderen Zeilen nicht mehr.
Nimm es hin. Das hat mit dem schlechten WYSIWYG von Office zu tun. Mit fixbreiten Schriften kann man das Thema oft erledigen - sieht halt nicht so schön aus. Mit normalen Schriften kann man die Höhen manuell steuern, wenn garantiert ist, dass nur manuelle Umbrüche zu tatsächlichen Umbrüchen führen. Dann:
probier bitte einmal den unteren Code in einem normalen Modul aus. Der sollte alles löschen. Trim geht meines Wissens nur über For Next Schleife, nicht als Replace? Ich nehme an der Zeilenumbruch hat mit WrapText zu tun, das der in den Zellen auf True steht. Geschieht oft beim Kopieren aus dem Internet Ich nehme an Alt+Enter müsste vbLF für LineFeed sein, bin mir aber nicht ganz sicher?
mfg Gast 123
Code:
Sub Text_bereinigen() Dim AC As Range, lz As Long With Worksheets(1) lz = Cells(Rows.Count, 5).End(xlUp).Row .Columns("E").Replace vbLf, "" 'Zeilenvorschub (13) .Columns("E").Replace Chr(10), "" 'Zeichen 10 .Columns("E").Replace Chr(160), " " 'Space 160 .Columns("E").WrapText = False 'kein Zeilenumbruch!
For Each AC In .Range("E1:E" & lz) AC.Value = Trim(AC) Next AC End With End Sub
Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:1 Nutzer sagt Danke an Gast 123 für diesen Beitrag 28 • TomKra
vielen Dank für Deine ausführliche Anleitung. Leider hat das Makro keinen sichtbaren Erfolg gebracht. Es hat zwar die Tabelle durchgearbeitet, aber am Aussehen des Textes hat sich nichts geändert.
Das hättest Du aber auch selbst per Makro-Rekorder herausfinden können
Alle Leerzeichen einfach zu ersetzen macht natürlich wenig Sinn, also wäre es gut zu wissen, woran man ein überzähliges Leerzeichen erkennt. Und erzähl auch mal in welcher Zelle an welcher Stelle sich z. B. ein überzähliges Leerzeichen befindet.
EDIT: So kannst Du die Zeilenhöhe automatisch anpassen: ActiveSheet.Rows.EntireRow.AutoFit