AW: String und Zeilenumbruch
Martina
Hallo,
dann bin ich beruhigt. Es las sich nämlich etwas anders.
"Zeichen 79 ist ein Zeilenumbruch
Also kommt auf das Zeichen 80 ebenfalls ein Zeilenumbruch,... nun hast du 2 hintereinander. Gewollt ?"
Nein
"Zeichen 80 ist ein Punkt
Also kein Wort, kann also duch einen Zeilenumbruch ersetzt werden. Nun hast du den Punkt in einer neuen Zeile. Gewollt ?"
Nein, aber ein Punkt steht direkt hinter einem Wort, ist also kein Worttrenner.
"Zeichen 80 ist ein Punkt aber Zeichen 81 ist ein Zeilenumbruch.
Siehe oben. Nun hast du den Punkt in einer neuen Zeile stehen und danach nochmals eine neue Zeile, weil alle bisherigen Zeilenumbrüche mitgenommen werden sollen. Gewollt ?"
Nein, nicht gewollt. Aber Punkt gehört zum Wort (s.o.)!
"Zeichen 80 steht mitten in einem Wort mit, sagen wir mal, 20 zeichen. Zeilenumbruch vorher. Nun entsteht ein Flattersatz erster Güte. Gewollt ?"
Nicht gewollt, aber auch nicht schlimm. Betrifft nur automatische Lieferscheine.
"Ganz abgesehen davon, dass die Anzahl der Zeilen für einen Textbaustein auf einem Lieferschein mit fixer Schriftart ebenfalls limitiert ist,... erkennst du jetzt wahrscheinlich die Problematik besser."
Ich bin mir der Problematik doch bewusst, sonst hätte ich mich doch nicht an dieses Forum gewandt. Ich selbst bekomme es nicht hin. Ich habe für eine einfache Trennung nach max. xx Zeichen einen Code-Schnipsel gefunden. Doch hab ich das Problem, dass da starr gezählt wird, d.h. ohne Rücksicht darauf vor wieviel Zeichen der letzte Zeilenumbruch war. Verstehst Du mein Problem nun eher?
Textbausteine würde ich gerne verwenden, doch ist das nur bedingt möglich. Jeder Lieferschein hat andere Hinweise, die auch nicht Standartisiert werden können. Sorry.
Hier hab ich mal den Schnipsel, den ich heute bei einer Suche über Yahoo gefunden habe. Er ist nicht wirklich brauchbar.
Dim i As Integer
Dim j As Integer
Private Sub test()
Dim lZeile As Long
Dim txt As String, tmpText As String
tmpText = TextBox1.Text 'Text aus Form2 übernehmen
TextBox2.Text = "" 'Textbox leeren
lZeile = 80 ' Länge einer Zeile auf dem Papier!
For i = 0 To Len(tmpText) Step lZeile
txt = VBA.Left(tmpText, lZeile)
For j = lZeile To 1 Step -1
If VBA.Right(txt, 1) = " " Or InStr(1, txt, " ") <= 0 Then
txt = VBA.Left(txt, Len(txt) - 1)
If Len(tmpText) - Len(txt) < 0 Then
TextBox2.Text = TextBox2.Text & txt & vbCrLf
GoTo ende
End If
tmpText = VBA.Right(tmpText, Len(tmpText) - Len(txt))
Exit For
Else
txt = VBA.Left(txt, Len(txt) - 1)
End If
Next
TextBox2.Text = TextBox2.Text & txt & vbCrLf
Next
ende:
'Irgend einen Abschlusscode
End Sub
Gruß
Martina