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

Forumthread: VBA Leerzeichen im Zelleninhalt löschen

VBA Leerzeichen im Zelleninhalt löschen
01.10.2024 13:07:15
kackei
Moin,

ich habe einen Zelleninhalt, der wie folgt ausschaut.
"
Text

Text, Text

Text
"

Über Columns("BY:BY") = Application.Substitute(Columns("BY:BY"), Chr(10), "") steht in der Zelle folgendes:
"
Text
Text, Text
Text
"

Mein Problem, wenn ich mir in den Zellinhalt im Bearbeitungsbereich anschaue, dann stehe dort:
"
Text

Text, Text

Text
"

Wenn ich nun mit der Maus den Bearbeitungsbereich anklicke, sieht man als angezeigten Text den Inhalt in der ursprünglichen Version (siehe oben). Lasse ich den Code noch einmal drüberlaufen, dann ist der Inhalt auch im Bearbeitungsbereich wie folgt. Ich muss aber jede Zelle einmal im Bearbeitungsbereich angeklickt haben, damit ich den eigentlich gewünschte Inhalt erhalte.
"
Text
Text, Text
Text
"

Kann sein, dass ich die Substitute-Funktion nicht ganz richtig verstanden habe, aber eigentlich müssten doch Value und Text geändert und die Leerzeichen entfernt werden, oder? Habt ihr eine Alternatividee?

Grüße und Dank aus Ostfalen.
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Leerzeichen im Zelleninhalt löschen
01.10.2024 13:36:30
Yal
Hallo Kai,

ungetestet:
Sub Split()

Dim Arr
Dim i
Arr = Columns("BY:BY").Values
For i = LBound(Arr, 1) To UBound(Arr, 1)
Arr(i, 1) = WorksheetFunction.Trim(WorksheetFunction.Substitute(Arr(i), Chr(10), ""))
Next
Columns("BY:BY").ClearContents
Columns("BY:BY").Value = Arr
End Sub


VG
Yal
Anzeige
AW: VBA Leerzeichen im Zelleninhalt löschen
02.10.2024 00:06:10
Kuwer
Hallo kackei,

vielleicht so:
Sub aaa()

With Range("BY:BY")
.Replace Chr(10), ""
.Copy
.PasteSpecial xlPasteValues
End With
End Sub

Gruß, Uwe
AW: VBA Leerzeichen im Zelleninhalt löschen
02.10.2024 06:54:18
kackei
Moin Uwe,

dein Code funktioniert grundsätzlich auch. Danek für die Idee. Ich muss aber tatsächlich Chr(13) nehmen, damit er in deiner Idee auch bei mir funktioniert. Ich habe mich letztlich aber für die kurze Variante entschieden ;)

Grüße.
Anzeige
AW: VBA Leerzeichen im Zelleninhalt löschen
01.10.2024 15:30:24
kackei
Hallo Val,

gute Idee, aber ich fürchte Excel/ VBA erkennt das Leerzeichen / den Zeilenumbruch nicht. Ich habe bei einer entsprechenden Zelle mal ausgelesen, was das erste Zeichen ist und mir wurde

wert = "

angezeigt. Die Msgbox zeigt Leere, da lässt sich aber natürlich nicht sagen, ob nicht ein Leerzeichen anzeigt wird. Lese ich den Inhalt der Zelle aus, bleibt es dabei:

"
oder ggf. auch ein
oder ggf. auch ein
Text
oder ggf. auch ein
"

Mir scheint, dass das vielleicht gar nichts mit VBA zu tun hat? Ansonsten funktioniert das mit Trim. Mich wundert, dass die Leerzeichen / der Zeilenumbruch lediglich in der Bearbeitungszeile, nicht aber in der Zelle selbst angezeigt wird, von VBA aber tatsächlich erkannt wird.

Grüße
Anzeige
AW: VBA Leerzeichen im Zelleninhalt löschen
01.10.2024 16:12:51
Yal
Neben chr(10) könnte auch chr(13) relevant sein.

VG
Yal
AW: VBA Leerzeichen im Zelleninhalt löschen
02.10.2024 06:52:25
kackei
Moin Val,

Chr(13) ist tatsächlich die Lösung gewesen. Musste auch erst einmal nachschauen, wofür das Zeichen steht. Bin aber nicht wirklich schlauer geworden ... Hat mir aber geholfen, vielen Dank dafür.

Grüße.
AW: VBA Leerzeichen im Zelleninhalt löschen
02.10.2024 12:22:01
daniel
Hi
die Steuerzeichen kommen aus der alten Fernschreiberzeit, als man eine mechanische Schreibmaschine als Ausgabemedium verwendet hat.

dabei gab es zwei Befehle: den LineFeed (Zeichen 10 / Zeilenvorschub) welches das Papier weiter gedreht wurde, so dass das nächste Zeichen in eine neue Zeile geschrieben wurde und den CarrigdeReturn (Zeichen 13 / Wagenrücklauf), welches die Eingabe des nächsten Zeichens wieder an den linken Rand gebracht hätte.
für eine echte neue Zeile benötigte man damals beides, ein LineFeed allein hätte einen Treppenartigen Text zur Folge gehabt, ein CarridgeReturn alleine hätte zur Folge gehabt, dass dieselbe Zeile immer wieder überschrieben wird.
daher ist in den meisten importierten Texten die Kombination aus Zeichen 13 und Zeichen 10 zu finden (in VBA gibt es dafür auch eine Konstante vlCrLf)
innerhalb der Excelzelle jedoch reicht das Zeichen 10.

Gruß Daniel
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

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