Per VBA Zeilenumbruch entfernen?

6 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Manuell mit der Ersetzen-Funktion: Alt + 010

Wenn man dies als Makro aufzeichnet erhält man:

Cells.Replace What:="" & Chr(10) & "", Replacement:="", LookAt:=xlPart, SearchOrder:= _ xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

Drücke Strg + H Dann öffnet sich ein Dialogfenster. Bei Suchen nach gibst du Alt + 010 ein. Dann wirst du zwar nichts sehen. Macht aber nichts. Bei Ersetzen durch kannst du z. B. ein Leerzeichen eingeben. Statt ein Leerzeichen kannst du jedes Zeichen oder Text eingeben

Iamiam  21.10.2016, 20:38

Habe das eben nachvollzogen: Alt(als Taste, nicht als Text!)010

ersetzen durch Beliebiges

es geht tatsächlich doch!
2

Komischerweise läuft das bei mir SO überhaupt nicht, weil bei Replace ein Argument fehlt und das auch sofort moniert wird!?

Aber auch mit dem zweiten Argument wird es so nicht akzeptiert, sondern will eine Zuweisung.
Interessanter Weise klappt es bei im Test mir SO:

Dim Text As String
Text = Range("A1").Replace(Chr(10), "")

Also einfach, indem ich es einer Variablen zuweise, OHNE die hinterher nochmal zu benutzen. In dem Moment, in dem Text das Replace zugewiesen wird, verschwindet der Umbruch in A1 automatisch, ohne dass ich Text zurückschreibe. Eigentlich müsste es bei Dir dann so klappen:


Dim Text as String
Text = Cells(t, 2).Replace(Chr(10), "") 

Klappt es?

P.S.:
Falls es immer noch nicht klapp, stelle sicher, dass der Umbruch wirklich Chr(10) ist. Ich meine, da gibt es noch einen anderen. Mit der Formel =CODE() bekommst Du den heraus.

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)
Iamiam  21.10.2016, 21:29

Bei mir ist da noch ein interessantes Phänomen aufgetreten. Ich wollte das in eine Zelle drunter einfügen mit diesen Befehlen: 

  • Text = ActiveCell.Replace(Chr(10), " ")
  • ActiveCell.Offset(1, 0).Value = Text


Ergebnis: WAHR !!! (in der Zelle, sonst nichts!)
Auch ohne Offset in derselben Zelle!
Ich schaffs nicht, den Inhalt von Test i'wo anders einzufügen! (vllt in ein Textfeld, hab ich nicht probiert)

0
Oubyi, UserMod Light  21.10.2016, 21:49
@Iamiam

War bei mir auch so.
Offensichtlich wird das nicht als Zuweisung verstanden, sondern als Abfrage ob beide Strings gleich sind und das sind sie natürlich.
Auch "Set Text" (aus Verzweiflung) funktioniert da nicht.

0

nachdem du bestätigt hast, dass die Umbrüche von alt+enter kommen, sollte es doch mit dem Replace von chr(10) klappen

For i = 1 To 2
Cells(i, 1).Value = Replace(Cells(i, 1).Value, Chr(10), "")
Next

ist mindestens bei meinen Versuchen erfolgreich

Muss es ein Makro sein?

Du kannst einfach links auf den Zeilenkopf rechtsklicken, Zellen formatieren, Ausrichtung, Haken bei Zeilenumbruch entfernen.

Jasteni 
Fragesteller
 21.10.2016, 16:34

Hallo. Das funktioniert leider so nicht. Dann verschwindet der Zeilenumbruch nicht. Und ja es muss Makro sein. Es sind ungefähr 2 mio. Zellen in ca 1000 Tabellen^^

0
Jasteni 
Fragesteller
 21.10.2016, 16:37
@Jasteni

 Es handelt sich ja um einen Manuellen Umbruch durch "Alt" und "Enter".

0
DeeDee07  21.10.2016, 16:44
@Jasteni

Also ich habe mit Alt+Enter Zeilenumbrüche erzeugt, welche sich nach beschriebener Methode entfernen ließen. Wobei ich natürlich nicht sicher sein kann, dass das in allen Excel-Versionen so gehandhabt wird, jedoch gehe ich davon aus.

Falls du mit Tabellen Tabellenblätter meinst, kannst du alle markieren (erstes Blatt anklicken, mit gedrückter shift-taste letztes Blatt anklicken), die ganze Tabelle markieren (oben links) und dann weiter wie beschrieben.

0
Iamiam  21.10.2016, 19:27
@DeeDee07

Kann es sein, dassd da auch noch Chr(13) (=Wagenrücklauf auf der Schreibmaschine) eine Rolle spielt?

Ansonsten: wie kommt denn der Zeilenumbruch überhaupt zustande? Ist das ein Umbruch innerhalb der Zelle? Da hatte ich mal was, finde das aber vorr. nicht mehr.

Wenn es aber durch Zellenwechsel nach eins drunter ist, dann die Zellen mit & aneinanderhängen, da kommt der Zeilenumbruch nicht mit rüber.

Wenn alle Stricke reissen: Zeichen für Zeichen durchgehen und aneianderhängen, wenn Zeichen >=32.

2
Oubyi, UserMod Light  21.10.2016, 19:51
@DeeDee07

Also ich habe mit Alt+Enter Zeilenumbrüche erzeugt, welche sich nach beschriebener Methode entfernen ließen.

Das ist FAST richtig.
Ich habe mir das jetzt mal genauer angesehen.
Wenn man mit ALT & ENTER eine Umbruch erzeugt, wird automatisch auch für diese Zelle die Einstellung auf "Zeilenumbruch" gestellt. Wenn man das wieder wegklickt, dann ist der Text auch nicht mehr umgebrochen.
Allerdings ist der manuelle Zeilenumbruch immer noch vorhanden.
In meinem Beispiel erhielt ich dann, auch wenn Zeilenumbruch ausgestellt war und der Text "an einem Stück" erschien mit der Formel:
=CODE(TEIL(B7;6;1))
das Ergebnis:
10
In der Bearbeitungsleiste war der Zeilenumbruch übrigens auch noch zu sehen.
Und sobald ich, z.B. wegen verringerter Spaltenbreite, den Zeilenumbruch wieder einschalte, habe ich den manuellen Umbruch wieder nach dem 6. Zeichen und erst dann die anderen Umbrüche wegen der Spaltenbreite.
Mir ist klar, dass das jetzt Feinheiten sind und ich es nicht "päpstlicher sehen sollte als der Papst", aber erwähnen wollte ich es trotzdem mal.
Sollte natürlich auch keine Kritik sein, nur eine Ergänzung,

2
DeeDee07  21.10.2016, 19:57
@Oubyi, UserMod Light

Danke für die Ergänzung. Das finde ich schon erwähnenswert, habe es keineswegs als Kritik aufgefasst. (Ich bin ja nicht völlig lernresistent :) )

1