Forums Neueste Beiträge
 

Textfeld aufteilen

29/06/2010 - 13:15 von Jochen Kramer | Report spam
Hallo zusammen,

kann mir jemand beim Denken helfen? Heute ist es viiiiel zu heiß.

Ich möchte ein Textfeld von max. 255 Zeichen aufteilen. Und zwar
sollten je Zeile max 40 Buchstaben enthalten sein, danach soll eine
neue Zeile beginnen. Folgender String als Beispiel:

ALT:
"Dies ist ein Test ohne punkt und Komma und ich hoffe hiermit auf über
40 Zeichen zu kommen. Allerdings sollen die Wörter nicht zerstückelt
werden."

NEU:
"Dies ist ein Test ohne punkt und Komma und"
"ich hoffe hiermit auf über 40 Zeichen zu"
"kommen. Allerdings sollen die Wörter nicht"
"zerstückelt werden."

Ich habe den String schon mit Split() in Wörter geteilt, aber mir
fehlt es ein wenig an der Logik. Vielleicht hat jemand auch bereits
eine fertige Lösung?

Beste Grüße,
Jochen
 

Lesen sie die antworten

#1 Josef Poetzl
29/06/2010 - 13:52 | Warnen spam
Hallo!

Jochen Kramer schrieb:
Ich möchte ein Textfeld von max. 255 Zeichen aufteilen. Und zwar
sollten je Zeile max 40 Buchstaben enthalten sein, danach soll eine
neue Zeile beginnen. Folgender String als Beispiel:


[...]
Ich habe den String schon mit Split() in Wörter geteilt, aber mir
fehlt es ein wenig an der Logik. Vielleicht hat jemand auch bereits
eine fertige Lösung?



Das daraus enthaltene Array durchlaufen, die Wörter wieder
zusammensetzen und bei dem Wort, dass die 40-Zeichen-Grenze sprengen
würde das Leerzeichen durch einen Zeilenumbruch ersetzen?

Kurz ausprobiert:

Dim alt As String
Const maxLen As Long = 40
alt = "Dies ist ein Test ohne punkt und Komma und ich hoffe " & _
"hiermit auf über 40 Zeichen zu kommen. Allerdings " & _
"sollen die Wörter nicht zerstückelt werden."

Dim wortArray As Variant
wortArray = Split(alt, " ")

Dim wort As Variant
Dim neu As String
Dim zeilenLaenge As Long
For Each wort In wortArray
If zeilenLaenge + Len(wort) > (maxLen - 1) Then
neu = neu & vbNewLine
zeilenLaenge = 0
ElseIf Len(neu) > 0 Then
neu = neu & " "
zeilenLaenge = zeilenLaenge + 1
End If
neu = neu & wort
zeilenLaenge = zeilenLaenge + Len(wort)
Next

Debug.Print neu


mfg
Josef

Nicht vergessen: diese NG ist in den MS-Servern nicht mehr erreichbar.
=> eventuell gleich auf de.comp.datenbanken.ms-access umsteigen.

Code-Bibliothek für Access-Entwickler: http://access-codelib.net/
Access-FAQ von Karl Donaubauer: http://www.donkarl.com/

Ähnliche fragen