Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1684to1688
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Umgang mit Zeilenümbrüchen in VBA komme nicht weit

Umgang mit Zeilenümbrüchen in VBA komme nicht weit
16.04.2019 21:31:16
Thomas
Ich habe eine Datentabelle mit ca. 9600 Zeilen.
In einer Spalte D sind z.B. folgende Daten vorhanden
Befunden des Motors. Ausbauen der Wasserpumpe.Instandsetzen der Wasserpumpe.Erstellen eines Prüfprotokolls.
Der Text liegt ohne irgendwelche Zeilenumbrüche vor.
Über eine Userform und eine Textbox gebe ich die Daten ein bzw. lasse sie auch in der Userform Anzeigen. Zur weiteren Verarbeitung dürfen in der Spalte D aber nur 30 Zeichen in einer Zeile sein aber mehrere Zeilen in der Zelle sind erlaubt.
30 Zeichen
Spalte/Zeile D1
Befunden des Motors.
Ausbauen der Wasserpumpe.
Instandsetzen der Wasserpumpe.
Wie bekomme ich in VBA den Zeilenumbruch in den Text. Ich dachte an den Punkt als Trennzeichen bzw. in der Urform gab es als Trennezeichen ein ";"
;Befunden des Motors.;Ausbauen der Wasserpumpe.;Instandsetzen der Wasserpumpe.;Erstellen eines Prüfprotokolls.
Wie löse ich das in der Textbox. Habe in der Textbox die max Länge auf 30 eingestellt und Multiline und Wordwrap eingestellt. Funktioniert alles nicht. Bei der Eingabe von
30 Zeichen ist Schluss und ein Zeilenumbruch mit ALT+Enter geht auch nicht. Und wenn die vorhanden Daten schon länger sind wie 30 Zeichen ?
https://www.herber.de/bbs/user/129197.xlsb

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Anmerkung eines VBA-Laien
16.04.2019 21:35:37
lupo1
Ein Text-Argument einer VBA-Function funktioniert nur bis 255 Zeichen (manchmal etwas mehr).
Wenn man also statt Functions Subs verwenden kann, könnte das helfen.
AW: Umgang mit Zeilenümbrüchen in VBA komme nicht weit
16.04.2019 22:32:02
Daniel
Hi
wü+rde ich her so machen, ohne TextBox:
1. füge diesen Code in ein allgemeines Modul ein:
Function Umbruch(txt As String, AnzahlZeichen As Long) As String
Dim Teiltexte
txt = Replace(txt, Chr(10), Chr(10) & " ")
Dim i As Long
Dim AnzZ As Long
Teiltexte = Split(txt, " ")
AnzZ = Len(Teiltexte(0))
For i = 0 To UBound(Teiltexte) - 1
If Right(Teiltexte(i), 1) = vbLf Then
AnzZ = Len(Teiltexte(i + 1))
ElseIf (AnzZ + Len(Teiltexte(i + 1)) + 1) > AnzahlZeichen Then
Teiltexte(i) = Teiltexte(i) & vbLf
AnzZ = Len(Teiltexte(i + 1))
Else
AnzZ = AnzZ + 1 + Len(Teiltexte(i + 1))
End If
Next
Umbruch = Join(Teiltexte, " ")
Umbruch = Replace(Umbruch, vbLf & " ", vbLf)
End Function
2. schreibe dann in eine Nachbarzelle die Formel: =Umbruch(D1;30)

die Funktion nimmt den Text auseinander und fügt immer einen Zeilenumbruch ein, wenn beim nächsten Wort die Anzahl 30 Zeichen überschritten würde.
der Umbruch ist das zeichen mit dem ASCII-Code 10, in VBA über die Systemvariable vbLF verfügbar.
den Weg über die TextBox kann man gehen, ist hier aber aufwendig.
die TextBox wäre erforderlich, wenn du keine feste Anzahl an Zeichen vorgeben würdest, sondern eine bestimmte Pixel-Breite eingehalten werden müsste, bei der die Anzahl der Zeichen jedoch variabel sein kann, denn in Proportionalschriftarten sind die Zeichen unterschiedlich breit, so dass dann die Breite der einzelnen Zeichen berücksichtigt werden müsse, und dass kann nur die TextBox automatisch.
Gruß Daniel
Anzeige

304 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige