version=1.0.0 vdate=20.10.2015 fname=udf_wordwrap.bas ns=%NAMESPACE% fpath=/vba/functions ====== [VBA] wordwrap() ====== //Mittels wordwrap() können längere Texte umgebrochen werden, ohne dass die Wörter zerstückelt werden// ==Version %%version%% - %%vdate%%== {{%%fname%%|Download %%fname%% (V-%%version%%)}} ===== Definition ===== ''string = wordwrap(string, long [,eWrapParams [,long]])'' Public Function wordwrap( _ ByVal iText As String, _ ByVal iMaxLen As Long, _ Optional ByVal iParams As eWrapParams = ewwDefault, _ Optional ByVal iBreak As String = vbCrLf _ ) As Variant ***iText** Der Text, der zerlegt werden soll ***iMaxLen** Maxiale Zeilenlänge ***iParams** Settings zur Funktion. Siehe Enum [[#enumerator_ewrapparams|eWrapParams]]. Die Parameter sind komulierbar ***iBreak** Trennzeichen. Normalerweise ein Zeilenumbruch (vbCrLf) ==== Return ==== EIn String oder ein Stringarray. Je nach eWrapParams. ==== Enumerator eWrapParams ==== Public Enum eWrapParams ewwDefault = 0 ewwReturnArray = 2 ^ 0 'Gibt ein Array anstelle eiens Strings zurück. Der Parameter iBreak wird ignoriert ewwCutLongWords = 2 ^ 1 'Zerschneidet überlange Wörter ewwRemoveBreaks = 2 ^ 2 'Bestehende Zeilnumbrüche im Originaltext werden entfernt End Enum ===== Beispiele ===== {{section>:snippets#vba_print_r&noheader&firstseconly}} ==== Standartanwendung ==== text = "Seit heute wird der Fahrplan im Bahnhof Zürich auf einem 19 Meter breiten LED-Bildschirm angezeigt. Je 15 Quadratmeter aber sind für Werbung reserviert." Debug.Print wordwrap(text, 25) Seit heute wird der Fahrplan im Bahnhof Zürich auf einem 19 Meter breiten LED-Bildschirm angezeigt. Je 15 Quadratmeter aber sind für Werbung reserviert. ==== Rückgabe als Array ==== text = "Seit heute wird der Fahrplan im Bahnhof Zürich auf einem 19 Meter breiten LED-Bildschirm angezeigt. Je 15 Quadratmeter aber sind für Werbung reserviert." print_r wordwrap(text, 25, ewwReturnArray) ( [0] => 'Seit heute wird der' [1] => 'Fahrplan im Bahnhof' [2] => 'Zürich auf einem 19 Meter' [3] => 'breiten LED-Bildschirm' [4] => 'angezeigt. Je 15' [5] => 'Quadratmeter aber sind' [6] => 'für Werbung reserviert.' ) ==== Wörter die Länger als die erlabute Zeilenlänge sind ==== Standart. Das zu lange Wort wird nicht zerstückelt text = "Die Autobahnbrückenspezialbeschilderung ist falsch" Debug.Print wordwrap(text, 25) Die Autobahnbrückenspezialbeschilderung ist falsch Das Wort zerstückeln text = "Die Autobahnbrückenspezialbeschilderung ist falsch" Debug.Print wordwrap(text, 25, ewwCutLongWords) Die Autobahnbrückenspezialbes childerung ist falsch Und das noch kombiniert mit der Array-Ausgabe text = "Die Autobahnbrückenspezialbeschilderung ist falsch" print_r wordwrap(text, 25, ewwCutLongWords + ewwReturnArray) ( [0] => 'Die' [1] => 'Autobahnbrückenspezialbes' [2] => 'childerung ist falsch' ) ==== Text mit Zeilenumbruch ==== Nehmen wir mal ein Text, der Bereits Zeilenumbrüche hat. Diese Sollen natürlich erhalten bleiben text = " Ausgetrocknetes Flussbett." & vbCrLf & "Die Töss führt diesen Oktober so gut wie kein Wasser." Debug.Print wordwrap(text, 20) Ausgetrocknetes Flussbett. Die Töss führt diesen Oktober so gut wie kein Wasser. Oder der Zeilenumbruch wird entfernt text = " Ausgetrocknetes Flussbett." & vbCrLf & "Die Töss führt diesen Oktober so gut wie kein Wasser." Debug.Print wordwrap(text, 20, ewwRemoveBreaks) Ausgetrocknetes Flussbett. Die Töss führt diesen Oktober so gut wie kein Wasser. ===== Code =====