PDA

Vollständige Version anzeigen : Zeilenumbrüche in String übernehmen


Gleitschirmflieger
08.07.2015, 15:25
Hallo zusammen!

Ich wäre Dankbar für eine kleine Hilfestellung bei folgendem Problem:

In einer TextBox lasse ich Zeilenumbrüche zu.
Sowohl automatisch als auch vom User generierte.
Diese Zeilenumbrüche sollen 1:1 in einen String übernommen werden.

Dies funktioniert mit den vom User generierten Zeilenumbrüchen, jedoch nicht mit den automatisch generierten.

Wie kann ich erreichen, dass auch die automatisch eingefügten Zeilenumbrüche in den String übernommen werden.
Ich habe einen kleinen Beispiel-Code geschrieben um das Problem darzustellen.
Hier ein Bild mit dem Ergebnis als MsgBox:

http://www.ms-office-forum.net/forum/attachment.php?attachmentid=86992&stc=1&d=1436364830http://

Erklärung zum Bild:
Nach "XXX" wurde ein Zeilenumbruch mit {ENTER} erzeugt.
Der Zeilenumbruch in der Zeile mit "OOOOOOO" ist automatisch erzeugt und wird nicht in den String übernommen wie an der Ausgabe durch die MsgBox zu sehen ist.

Hier mein Code: (Im CodeModule der Userform1)

Option Explicit

Private Sub UserForm_Initialize()
With UserForm1.TextBox1
.MultiLine = True
.EnterKeyBehavior = True
.WordWrap = True
End With
End Sub

Private Sub CommandButton1_Click()
Dim strInput As String
strInput = UserForm1.TextBox1.Value
MsgBox strInput
End Sub


Vorab vielen Dank an Hilfswillige.
Schöne Grüße,

Frank

haklesoft
08.07.2015, 15:50
Hallo Gleitschirmflieger,

beim automatischen Umbruch werden keine echten Zeilenwechsel eingefügt. Die kann man folglich auch nicht übernehmen.
Du könntest beim Übernehmen testen, ob der Teilstring eine von Dir festgesetzte Grenze überschreitet und ggf. einen festen Umbruch einfügen.

Gleitschirmflieger
08.07.2015, 16:21
Servus haklesoft,

Danke, ... hab ich mir fast schon gedacht und mich auch schon damit abgefunden hierbei nicht um "Extra-Code" rumzukommen.

Ich möchte mir komplizierte String zerpflückung sparen.
Zudem ist es auch schwierig die Begrenzung zu setzten da je nach verwendeten Charaktern unterschiedlich viele in die breite der Textbox passen. (Klar, man könnte das minimum setzten ... unschön)

Grübel grad rum ob ich nicht irgendwie mit "TextBox1.LineCount" eine simple Lösung basteln kann denn "TextBox1.WordWrap" macht hier schon einen guten Job bei den Umbrüchen.
Ist es den irgenwie möglich die TextBox Line für Line auszulesen ???

Gruß,
Frank

PS: haklesoft, ... hab ich Dich schonmal gefragt ob Du was mit der Harzer Gleitschirmschule zu tun hast? Dein Avatar erinnert mich stark an deren Logo ;) Falls Du der Inhaber bist kennen wir uns schon :)

haklesoft
08.07.2015, 17:27
Hallo Frank,

wenn Du WordWrap auf False setzt, muss der Anwender Umbrüche selber einfügen. Vorteil: Du kannst den Text direkt übernehmen. Nachteil: der Anwender hat die Verantwortung, passende Umbrüche zu setzen.

Wenn automatische und manuelle Umbrüche möglich sein sollen, kannst Du den Text mit Split in einzelne Zeilen aufteilen. Die Länge der einzelnen Strings kannst Du untersuchen um bei Überschreitung einer Maximallänge zusätzliche Umbrüche einfzufügen. Das ist mit VBA nicht kompliziert, liefert aber nicht immer stimmige Ergebnisse.

Alternative wäre die Auswertung der Textboxzeilen mit Hilfe von API-Funktionen. Die hab ich im Moment aber nicht parat.


OT: PS: haklesoft, ... hab ich Dich schonmal gefragt ob Du was mit der Harzer Gleitschirmschule zu tun hast? Dein Avatar erinnert mich stark an deren Logo Falls Du der Inhaber bist kennen wir uns schon Dazu habe ich hier (http://www.ms-office-forum.net/forum/showpost.php?p=1604878&postcount=4) geantwortet. Aber Cheffe bin ich nicht...