Text nach 40 Zeichen mit Umbruch teilen

Moderator: ModerationP

Text nach 40 Zeichen mit Umbruch teilen

Beitragvon Guenter86 » 16. Aug 2019, 10:49

Hallo liebe Community,

ich müsste meinte langen Texte aus meiner Excel (Excel 2016) Datei nach 40 Zeichen einen Umbruch setzen, jedoch darf der Umbruch nicht mitten im Wort stattfinden.
Ich habe einige gefunden jedoch funktioniert das nicht oder nur Teils mit der ersten Zeile und ich habe keine Ahnung von VBA.

Hier ein Beispiel vom Text er einen Umbruch erhalten sollte:
1 Schublade oben mit Siphonausschnitt,1 Auszug unten,Waschtischunterschrank für WT 2.0 113.O / 113.G / 113.H / 113.1,1 Auszug oben mit Siphonausschnitt;1 Auszug unten,Frontaufteilung mittig,Inneneinteilung möglich: ACAA034,Waschtischunter.

Der Text sollte dann so aussehen:
1 Schublade oben mit Siphonausschnitt,1
Auszug unten,Waschtischunterschrank für
Subway 2.0 7113.FO / 7113.6G / 7113.6H
/ 7113.F1,1 Auszug oben mit
Siphonausschnitt,1 Auszug
unten,Frontaufteilung
mittig,Inneneinteilung möglich:
ACAA034,Waschtischunter

Was ich auch gefunden hätte wäre der unten angeführte Code, jedoch funktioniert dieser nur auf 1 Zeile und nicht auf alle die ich markiere.
Habe ja 200.000 davon :cry:

Sub zeilenumbruch()
Dim woerter() as String
Dim wort as Variant
Dim zeile as String
Dim ausgabe as String

woerter = Split(ActiveCell.Value, " ")

For Each wort In woerter
If Len(zeile) + Len(wort) < 40 Then
zeile = zeile & wort & " "
Else
ausgabe = ausgabe & zeile & vbLf
zeile = wort & " "
End If
Next

ausgabe = ausgabe & zeile & vbLf
ausgabe = Left(ausgabe, Len(ausgabe) - 2)
ActiveCell.Value = ausgabe
End Sub

Wäre echt nett wenn mir jemand hier weiter helfen könnte da ich für das zu dumm bin.
Mit Freundlichen Grüßen
Günter
Guenter86
 

Re: Text nach 40 Zeichen mit Umbruch teilen

Beitragvon juvee » 16. Aug 2019, 10:59

Hi,

na dann mache ein Schleifchen drumherum
Code: Alles auswählen
Sub zeilenumbruch()
Dim woerter() As String
Dim wort As Variant
Dim zeile As String
Dim ausgabe As String
Dim rng As Range

For Each rng In Selection   ' auf markierte Zellen anwenden
  woerter = Split(rng.Value, " ")
  For Each wort In woerter
     If Len(zeile) + Len(wort) < 40 Then
       zeile = zeile & wort & " "
     Else
       ausgabe = ausgabe & zeile & vbLf
       zeile = wort & " "
     End If
  Next
  ausgabe = ausgabe & zeile & vbLf
  ausgabe = Left(ausgabe, Len(ausgabe) - 2)
  rng.Value = ausgabe
Next
End Sub


VG Juvee
Ich habe "juvee" am 25.01.2018 gegoogelt. Ich distanziere mich von den ungefähr 252 Einträgen ausdrücklich.
Da binich nich dabei, dat is pri ima, vivaaaaa....lalalala!
juvee
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2621
Registriert: 05. Jun 2014, 12:48

Re: Text nach 40 Zeichen mit Umbruch teilen

Beitragvon Hajo_Zi » 16. Aug 2019, 11:06

Signatur
Bitte Version angeben. Bei keiner Angabe gehe ich von meinen Angaben aus.
Office 2016 Plus - 32 Bit.
Da die Mailbenachrichtigung bei mir nicht geht. Weitere Antworten dem Zufall überlassen.
Falls lange keine Antwort kommt, PN.
Benutzeravatar
Hajo_Zi
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 4020
Registriert: 31. Jan 2004, 18:26
Wohnort: Straubing

Re: Text nach 40 Zeichen mit Umbruch teilen

Beitragvon Gast » 16. Aug 2019, 11:46

Hallo juvee,

die Schleife bewirkt leider das die markierten Zeilen zusammengefasst werden und somit immer länger wird.

Wahrscheinlich habe ich mich wieder falsch ausgedrück, passiert mir immer.

Ich möchte das der Inhalt aus Zeile Bsp. E2 in E2 bleibt nur das in der Zeile der Textumbruch gemacht wird.

Die Excel Vorlage von Hajo ist im Prinzip super nur wird hier immer eine neue Zeile erstellt und das möchte ich in diesem Fall leider nicht.


mfg
Günter
Gast
 

Re: Text nach 40 Zeichen mit Umbruch teilen

Beitragvon juvee » 16. Aug 2019, 12:05

Hi,

jo.

Du mußt noch zeile und ausgabe wieder leeren
Code: Alles auswählen
.....
rng.Value = ausgabe
  ausgabe = ""
  zeile = ""
next
end sub


VG Juvee
Ich habe "juvee" am 25.01.2018 gegoogelt. Ich distanziere mich von den ungefähr 252 Einträgen ausdrücklich.
Da binich nich dabei, dat is pri ima, vivaaaaa....lalalala!
juvee
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 2621
Registriert: 05. Jun 2014, 12:48

Dafür gibt's schon lange etwas, ...

Beitragvon Luc$:-? » 16. Aug 2019, 12:26

...Günter,
die UDF TxRows: w³.herber.de/bbs/user/61870.xls (DownLoad) bzw w³.herber.de/cgi-bin/callthread.pl?index=1084680#1085532
Damit ließe sich folgd Fml bilden: =TxRows(A1;40)
Allerdings kommt die nicht ganz zu deinem Wunschergebnis, zumal du offensichtlich auch 2 verschiedene Texte benutzt hast.
Gruß, Luc :-?
Luc$:-?
 

Re: Text nach 40 Zeichen mit Umbruch teilen

Beitragvon Gast » 16. Aug 2019, 13:59

@Luc

da ich davon keine Ahnung habe weis ich leider nicht was du meinst :badgrin:

@juvee

Danke das funktioniert nun super.
Habe halt schon mal Laufzeitfehler 5 gehabt aber das dürfte nach einer Leerzelle gelegen habe da ich die dann ausgelassen habe.

Vielen Dank nochmal an alle :-)
Gast
 

UDF - userdefined function in VBA

Beitragvon Luc$:-? » 16. Aug 2019, 14:26

Dann tut's mir leid, Günter;
wer mit VBA-Makros arbeiten kann/will, sollte das auch mit einer UDF können. Vorteil letzterer - sie kann idR in ZellFmln eingesetzt wdn.
Ich hatte dir 2 entschärfte Links angegeben (direkte wdn hier kaum mehr akzeptiert, spez DownLoadLinks von/zu anderen Foren). Da findest du die UDF, denn ich sehe nicht ein, warum die immer wieder neu gepostet wdn soll. Damit wärst du flexibler als mit den meisten Augenblicksmakros, die idR ganz speziell zugeschnitten sind. Aber das ist dir wohl tatsächlich zu unbegreiflich... ;-]
Und dass du 2 verschiedene Texte benutzt hast, einen als Quell- und den anderen als ZielText, sollte dir eigentlich auffallen...
Luc :-?
Luc$:-?
 

Re: Text nach 40 Zeichen mit Umbruch teilen

Beitragvon snb » 16. Aug 2019, 14:28

Code: Alles auswählen
Sub M_snb()
   For Each it In Selection
      c00 = it.Value
      jj = 40
     
      Do
        Do Until Mid(c00, jj, 1) = " "
          jj = jj - 1
        Loop
      c00 = Left(c00, jj - 1) & vbLf & Mid(c00, jj + 1)
      jj = jj + 40
      Loop Until jj > Len(c00)
     
      it.Value = c00
    Next
End Sub
snb
Im Profil kannst Du frei den Rang ändern
 
Beiträge: 7260
Registriert: 25. Sep 2014, 16:37


Zurück zu Excel Forum (provisorisch)

Wer ist online?

Mitglieder in diesem Forum: Klaus-Dieter und 21 Gäste