Clever-Excel-Forum

Normale Version: VBA wechseln und glätten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
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 schon mal für Eure Mithilfe

Gruß

Thomas
Hallo,

Du suchst nach TRIM und REPLACE.
Hallo Michael,

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.

Ich stehe gerade etwas auf dem Schlauch.

Gruß

Thomas
(24.11.2018, 10: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:

Zeilenhöhe: =Standardhöhe*(Anzahl_harte_Umbrüche - 1)

über VBA z.B. via Change_Event zu vergeben.
Hallo

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
Hallo Gast 123,

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.

Gruß

Thomas
Hallo Thoma

UPPs, da bin ich überrascht.  Kannst du bitte mal eine Beispieldatei hochladen, ggf. mit anonymem Text der aber das Prolem beinhaltet.

mfg  Gast 123
Hallo Gast 123,

anbei eine kleine Beispieldatei.

Gruß

Thomas
Hallo,

die Zeilenumbrüche zu ersetzen wäre nicht so schwer. Dazu kannst Du die Suchen und Ersetzen-Funktion verwenden, z.B. so:
Code:
Columns("E:E").Replace What:="" & Chr(10) & "", Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
Das hättest Du aber auch selbst per Makro-Rekorder herausfinden können Wink

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
Moin und nur augenzwinkernd gemeint, Michael:
Rows.EntireRow ist ungefähr so wie alle_Autos.jeweils_das_ganze_Auto
Rows.Autofit reicht natürlich …

Gruß Ralf
Seiten: 1 2