Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Replace Chr(10) - Wirkungslos

Forumthread: Replace Chr(10) - Wirkungslos

Replace Chr(10) - Wirkungslos
09.08.2021 18:44:27
Fred
Hallo Excel Profis,
Ich habe Text i.d.R. in der zweiten Zeile einer Zelle. Ich versuche Textumbruch aus der Zelle(n) zu entfernen. Das Makro:

Sub umbruch_entfernen()
With Sheets("Gesamt")
.Range("A10:E" & .Cells(.Rows.Count, "H").End(xlUp).Row).Replace Chr(10), ""
End With
End Sub
bringt leider nicht das gewünschte Ergebnis.
https://www.herber.de/bbs/user/147526.xlsb
Ich habe in einem alten Thread hier im Forum gelesen, das man mit der Funktion Code() den ASCII-Wert des Zeichens ermitteln kann.
Dieser zeigt mir 13 an.
Aber auch geändert auf "13" klappt es nicht.
Was könnte ich sonst noch probieren?
Gruss
Fred
Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Replace Chr(10) - Wirkungslos
09.08.2021 19:01:35
PeTeR
Hallo Fred,
versuch' mal Replace vblf
Viel Erfolg
PeTeR
AW: Replace Chr(10) - Wirkungslos
09.08.2021 19:02:15
Oberschlumpf
Hi Fred,
versuch es mal so:

Sub umbruch_entfernen()
With Sheets("Gesamt")
.Range("A10:B" & .Cells(.Rows.Count, "A").End(xlUp).Row).Replace Chr(10), ""
.Range("A10:B" & .Cells(.Rows.Count, "A").End(xlUp).Row).Replace Chr(13), ""
End With
End Sub
Deine Zellen enthalten sowohl Chr(10) als auch Chr(13)
Hilfts?
Ciao
Thorsten
Anzeige
AW: Replace Chr(10) - Wirkungslos
09.08.2021 19:08:11
Daniel
Hi
prinzipell funktioniert dein Code.
der Zeilenumbruch in Excel ist schon das Zeichen 10 und das wird auch entfernt.
Allerdings siehst du das Ergebnis nicht sofort, wenn die Textausrichtung unten ist. um den Effekt zu sehen, müsstest du entweder die Zeilenhöhe anpassen oder die die Textausrichtung oben einstellen.
mit dem Zeichen 13 ist das so:
in Excelzellen ist das Zeichen 10 alleine für den Zeilenumbruch zuständig.
das Zeichen 13 wird ignoriert.
andere Textsysteme haben für den Zeilenumbruch die Kombination aus Zeichen 13 und Zeichen 10 (in dieser Reihenfolge).
Kommt aus der Geschichte, als noch mit Schreibmaschinen gedruckt wurde (Fernschreiber).
Zeichen 13 ist der Wagenrücklauf, der bewirkt das der Schlitten oder Druckkopf wieder in die Ausgangsposition geht, Zeichen 10 dreht die Papierwalze eine Zeile weiter. Daher braucht man eigentlich beides, nur Zeichen 13 würde bedeuten, dass man die zuletzt beschriebene Zeile überschreibt (was am PC ja nicht geht) und Zeichen 10 alleine würde bedeuten, dass man in der neuen Zeile an der Position weiter macht, an der man in der Zeile drüber aufgehört hat und nicht am Anfang der Zeile.
Gilt aber in Excelzellen nicht, hier reicht das Zeichen 10 alleine für einen vollständigen Zeilenumbruch und das Zeichen 13 wird ignoriert, dh wenn es drin ist, sollte man es vollständigerweise auch rauslöschen, man muss aber nicht (zumindest nicht für die gewünschte Anzeige)
Gruß Daniel
Anzeige
AW: Replace Chr(10) - Wirkungslos
09.08.2021 19:18:10
Oberschlumpf
Hi Daniel,
ich hab gerad das, was du beschrieben hast, ausprobiert.
- nach Ausführen des vorhandenen Codes sind die Zellen "leer"
nee, es wird nur nix mehr gezeigt - stimmt, liegt an der Textausrichtung = "unten"
- nach Ändern der Textausrichtung auf "oben" ändert sich die Zeilenhöhe um das Doppelte, die Texte sind aber wenigstens sichtbar
- rechte MT und Anzeige der Formate zeigt aber, dass noch immer die Option "Zeilenumbruch" aktiv ist = CHR(13) wird also doch nicht so ignoriert
- entweder die Option "Zeilenumbruch" deaktivieren oder das Verwenden meines Codebeispiels führen erst dazu, dass in den Zellen wirklich nur noch der Text enthalten ist
Ciao
Thorsten
Anzeige
AW: Replace Chr(10) - Wirkungslos
09.08.2021 19:35:47
Fred
Hallo Daniel,
danke für deine ausführliche Erklärung von "Zeichen 10 & Zeichen 13" !!
Du hast (wie immer)recht.
Der Vorschlag von Thorsten

Sub umbruch_entfernen()
With Sheets("Gesamt")
.Range("A10:B" & .Cells(.Rows.Count, "A").End(xlUp).Row).Replace Chr(10), ""
.Range("A10:B" & .Cells(.Rows.Count, "A").End(xlUp).Row).Replace Chr(13), ""
End With
End Sub
werde ich dennoch übernehmen.
Eben habe ich festgestellt, dass

Replace vbCrLf, ""
ebenfalls mein gewünschtes Ergebnis erzielt.
Vielen Dank an PeTeR, Thorsten und an dir, Daniel!!
Gruss
Fred
gefiel mir dennoch am besten
Anzeige
AW: noch 1 Möglichkeit
09.08.2021 19:13:46
Luschi
Hallo Fred,
lt. Vba-Hilfe soll/muß man folgende 4 Parameter angeben: LookAt, SearchOrder, MatchCase, and MatchByte
siehe:https://docs.microsoft.com/en-us/office/vba/api/excel.range.replace
unter: Remarks/Bemerkungen
Um zu Prüfen, ob VbLf-Chr(10) oder VbCrLF-Chr(13) & Chr(10) vorliegt, setze den Cursor auf eine der betreffenen Zelle und starte folgende Routine:

Sub test()
Dim i1 As Integer, i2 As Integer, i3 As Integer
Dim s As String
s = ActiveCell.Value
i1 = Len(s)
For i2 = 1 To i1
Debug.Print Asc(Mid(s, i2, 1))
Next i2
End Sub
In Direktfenster des Vba-Editors siehst Du dann das Ergebnis
Gruß von Luschi
aus klein-Paris
Anzeige
AW: Replace Chr(10) - Wirkungslos
09.08.2021 19:25:38
Nepumuk
Hallo Fred,
so:

Sub umbruch_entfernen()
Worksheets("Gesamt").Range("A:B").Replace vbCrLf, "", xlPart
End Sub
Gruß
Nepumuk
soviele "Brüche" habe ich gar nicht :-)
09.08.2021 19:39:53
Fred
Es sprudelt an Lösungen,- soviele Umbrüche habe ich gar nicht :-)

.Range("A10:B" & .Cells(.Rows.Count, "A").End(xlUp).Row).Replace Chr(10), ""
.Range("A10:B" & .Cells(.Rows.Count, "A").End(xlUp).Row).Replace Chr(13), ""

Worksheets("Gesamt").Range("A:B").Replace vbCrLf, "", xlPart

.Range("A10:B" & .Cells(.Rows.Count, "H").End(xlUp).Row).Replace vbCrLf, ""
Gruss
Fred
Anzeige
AW: soviele "Brüche" habe ich gar nicht :-)
09.08.2021 20:48:01
Luschi
Hallo Fred,
es geht nicht darum, wieviele Umbrüche Du hast, sondern darum, daß
- Strg+H i(Ersetzen)m Tabellenarbeitsblatt
- die vorgenommenen Einstellungen speichert
- und wenn Du in Vba diese Einstellungen nicht überschreibst
- dann werden die gespeicherten Einstellungen genommen!
- und in meinem Link steht, welche Parameter das betrifft
Gruß von Luschi
aus klein-Paris
Anzeige
AW: soviele "Brüche" habe ich gar nicht :-)
09.08.2021 20:55:03
Oberschlumpf
Hi,
es geht nicht darum, dass du ihm noch ma alles erklärn musst, sondern darum, dass Fred sich einfach nur freute, so viele unterschiedliche Wege gezeigt zu bekommen, wie seine Frage erfolgreich beantwortet wurde - und nur das hat er mit seiner "Umbruch-Flut"-Antwort kundtun wollen.
Ciao
Thorsten
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Infobox / Tutorial

Zeilenumbrüche in Excel entfernen: Chr(10) und Chr(13) richtig ersetzen


Schritt-für-Schritt-Anleitung

Um Zeilenumbrüche in Excel zu entfernen, insbesondere die Zeichen Chr(10) und Chr(13), kannst Du das folgende VBA-Makro verwenden:

Sub umbruch_entfernen()
    With Sheets("Gesamt")
        .Range("A10:B" & .Cells(.Rows.Count, "A").End(xlUp).Row).Replace Chr(10), ""
        .Range("A10:B" & .Cells(.Rows.Count, "A").End(xlUp).Row).Replace Chr(13), ""
    End With
End Sub
  1. Öffne den VBA-Editor (Alt + F11).
  2. Füge ein neues Modul hinzu.
  3. Kopiere den obigen Code in das Modul.
  4. Schließe den Editor und führe das Makro aus.

Dieses Makro ersetzt alle Vorkommen von Chr(10) und Chr(13) in dem angegebenen Bereich.


Häufige Fehler und Lösungen

  • Problem: Das Makro zeigt keine Änderungen an.

    • Lösung: Überprüfe die Textausrichtung der Zellen. Wenn sie unten ausgerichtet ist, könnte der Text verborgen sein. Ändere die Ausrichtung auf oben.
  • Problem: Es bleibt unerwünschter Text in den Zellen.

    • Lösung: Stelle sicher, dass sowohl Chr(10) als auch Chr(13) entfernt werden. Nutze die beiden Replace-Methoden im Code.
  • Problem: Der Replace-Befehl funktioniert nicht korrekt.

    • Lösung: Stelle sicher, dass der richtige Bereich in .Range angegeben ist. Teste den Code in einer neuen Excel-Datei, um externe Einflüsse auszuschließen.

Alternative Methoden

Eine weitere Möglichkeit, um Zeilenumbrüche in Excel zu ersetzen, ist die Verwendung von vbCrLf, was für die Kombination aus Chr(13) und Chr(10) steht:

Sub umbruch_entfernen()
    Worksheets("Gesamt").Range("A:B").Replace vbCrLf, "", xlPart
End Sub

Du kannst auch die Excel-Funktion „Suchen und Ersetzen“ verwenden:

  1. Drücke Strg + H.
  2. Gib in das Feld „Suchen nach“ Alt + 010 (für Chr(10)) ein.
  3. Lass das Feld „Ersetzen durch“ leer und klicke auf „Alle ersetzen“.

Praktische Beispiele

Hier sind einige Beispiele, wie Du den Text in Zellen mit VBA manipulieren kannst:

  1. Spezieller Bereich ersetzen:

    Sub replace_in_specific_range()
        Sheets("Gesamt").Range("A1:A20").Replace Chr(10), ""
    End Sub
  2. Textausrichtung ändern:

    Sub change_text_alignment()
        With Sheets("Gesamt").Range("A1:A20")
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlTop
        End With
    End Sub
  3. Debugging der Zeichen:

    Sub test()
        Dim i1 As Integer, i2 As Integer
        Dim s As String
        s = ActiveCell.Value
        i1 = Len(s)
        For i2 = 1 To i1
            Debug.Print Asc(Mid(s, i2, 1))
        Next i2
    End Sub

Tipps für Profis

  • Verwende xlPart als Parameter, um nur Teile des Textes zu ersetzen.
  • Achte darauf, dass die Excel-Optionen für „Zeilenumbruch“ korrekt konfiguriert sind, um unerwartete Ergebnisse zu vermeiden.
  • Experimentiere mit Debug.Print, um den ASCII-Wert von Zeichen in einer Zelle zu überprüfen, falls Du unsicher bist, welche Zeichen vorhanden sind.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen Chr(10) und Chr(13)?
Chr(10) steht für den Zeilenumbruch, während Chr(13) den Wagenrücklauf darstellt. In Excel ist nur Chr(10) für einen Zeilenumbruch relevant.

2. Warum funktioniert mein Replace-Befehl nicht?
Stelle sicher, dass der Range korrekt definiert ist und dass Du die richtigen Zeichen ersetzt. Prüfe auch die Textausrichtung der Zellen.

3. Wie kann ich mehrere Zeilenumbrüche in einer Zelle auf einmal entfernen?
Du kannst den Replace-Befehl mehrmals aufrufen oder die vbCrLf-Option verwenden, um beide Zeichen gleichzeitig zu entfernen.

4. Was mache ich, wenn ich nicht sicher bin, welche Zeichen in der Zelle sind?
Verwende das test()-Makro, um die ASCII-Werte der Zeichen in der Zelle zu drucken und so herauszufinden, welche Zeichen vorhanden sind.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige