Zeilenumbruch aus TextBox stört

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
UserForm TextBox MsgBox
Bild

Betrifft: Zeilenumbruch aus TextBox stört
von: Herbert
Geschrieben am: 18.04.2005 19:45:55
Hallo Forum,
ich habe ein für mich derzeit unlösbares Problem und auch in der Recherche keine passende Antwort gefunden.
Aus einer TextBox (UserForm) schreibe ich Werte in eine Zelle. Da in der TextBox mit Shift+Enter Zeilenwechsel eingefügt werden, sind in der Zelle diese Umbrüche als Quadrate sichtbar und werden leider auch gedruckt.
Ich habe versucht, testweise mit


Sub TextSauber()
Selection.Replace What:=Chr(13), Replacement:=" "
End Sub

"Ordnung" zu schaffen. Das klappt eigentlich auch - die Kästchen sind weg, der Umbruch bleibt (da gibt es ja noch chr(10)).
Nur leider scheint es bei dieser Vorgehensweise eine Begrenzug der Textlänge zu geben!?
Hatte ca. 1050 Zeichen mit Umbrüchen - Ergebnis: Fehlermeldung "Formel zu lang".
Bei ca. 800 Zeichen klappte es.
Was kann ich machen?
Danke im Voraus
Gruß Herbert
Sorry - meinen Level gibt es nicht - darum der angegebene.
Bild

Betrifft: AW: Zeilenumbruch aus TextBox stört
von: Luc
Geschrieben am: 18.04.2005 21:19:21
Hallo Herbert,
ja, du hast recht, es gibt Textlängebeschränkungen (unterschiedlicher Art). Wenn du einen Text originär aus einer Zelle (wahrscheinlich auch aus einer Textbox) ausliest, darf der wesentlich länger sein als ein Text, der mittels eines Ausdrucks (Formel) an eine Function/Funktion übergeben wird.
Du könntest dich damit behelfen, dass du...
1. ...für die Zielzelle Zeilenumbruch einstellst,
2. ...das Replace doppelst: x=Replace(Replace(selection.text,Chr(13)," "),Chr(10)," "),
3. ...den Text direkt aus der Zielzelle nochmals ausliest, analog 2. behandelst und wieder in die Zielzelle speicherst,
4. ...den Text direkt in eine Hilfszelle und eine Verarbeitungsformel mit Bezug auf die Hilfszelle in die Zielzelle speicherst:
zielzelle.formula="=SUBSTITUTE(SUBSTITUTE(hilfszellbezug,Chr(13),"" ""),Chr(10),"" "")"
Wenn das alles wegen immer noch zu großer Textlänge nicht klappt, musst du den Text portionsweise aus der Textbox auslesen, indem du zum Textbox-Auslesen die Characters-Methode unter Angabe von Start:=... und Length:=... wählst.
Gruß Luc :-?
Bild

Betrifft: AW: Zeilenumbruch aus TextBox stört
von: MichaV
Geschrieben am: 18.04.2005 21:28:36
Hi,
z.B. lasse VBA rechnen, nicht Excel:


      
While Not InStr(strText, "a") = 0
  strText = Left(strText, InStr(strText, "a") - 1) & Right(strText, Len(strText) - InStr(strText, "a"))
Wend 

     Code eingefügt mit Syntaxhighlighter 3.0

Anstelle "a" solltest Du natürlich CHR(xx) einsetzen.
Gruß- Micha
PS: Rückmeldung wäre nett
Bild

Betrifft: AW: Zeilenumbruch aus TextBox stört
von: Herbert
Geschrieben am: 18.04.2005 21:49:20
Hallo Luc, hallo Micha,
danke für die Tipps. Muss das erst einmal verarbeiten und testen. Melde mich dann hoffentlich mit einer Erfolgsmeldung.
Ach so - die Umbrüche in der Zelle sind schon gewollt, halt nur mit Chr(10) und ohne Chr(13). Ich glaube nämlich, dass Shift+Enter beide Zeichen erzeugt, die dann das Kästchen darstellen.
Gruß Herbert
Bild

Betrifft: AW: Zeilenumbruch aus TextBox stört
von: MichaV
Geschrieben am: 18.04.2005 21:57:36
Hi,
das ist so. Kannst Du leicht prüfen:
txt=textbox1.text 'kurzer Text mit Zeilenumbruch
For i = 1 To Len(txt)
Cells(i, 1).Value = Asc(Mid(txt, i, 1))
Next i
Gruß- Micha
Bild

Betrifft: AW: Zeilenumbruch aus TextBox stört
von: Herbert
Geschrieben am: 18.04.2005 22:43:27
Hallo Micha,
irgendwie verstehe ich die Welt nicht.
Das steht in Zelle G6 (hinter "Text" ist jeweils ein Kästchen sichtbar - hier leider nicht zu sehen) und darunter dann der ASCII-Code nach einem Durchlauf - als ohne CHR(13).
Das heißt, der Code

Sub TextSauber()
Dim strText As String
Dim i As Long
'Range("G6").Replace What:=Chr(13), Replacement:="" ' Damit verschwinden die Kästchen
strText = Range("G6").Value 'textbox1.Text 'kurzer Text mit Zeilenumbruch
While Not InStr(strText, Chr(13)) = 0
MsgBox InStr(strText, Chr(13))
  strText = Left(strText, InStr(strText, Chr(13)) - 1) & Right(strText, Len(strText) - InStr(strText, Chr(13)))
Wend
MsgBox InStr(strText, Chr(13))  ' Hier meldet er dann 0
For i = 1 To Len(strText)
Cells(7 + i, 7).Value = Asc(Mid(strText, i, 1))
Next i
End Sub

nimmt das Zeichen Chr(13) auch weg - lt. Listing ;-)
Lass ich den Code nochmals laufen, findet er wieder Chr(13) und die blöden Kästchen bleiben.
Hiermit Range("G6").Replace What:=Chr(13), Replacement:="" verschwinden sie wirklich.
Was ist da los?
Gruß Herbert
Bild

Betrifft: AW: Zeilenumbruch aus TextBox stört
von: Luc
Geschrieben am: 18.04.2005 22:59:01
Hallo Herbert,
ich will mal nicht hoffen, dass sich dein 2.Durchlauf wieder auf die gleiche Ausgangssituation, d.h. die Textbox, bezieht, sondern du den bereits veränderten Text als Input des 2.Laufes benutzt. Instr ist in dieser Form eigentlich zuverlässig!
Gruß Luc :-?
Bild

Betrifft: AW: Zeilenumbruch aus TextBox stört
von: MichaV
Geschrieben am: 18.04.2005 23:02:37
Hi,
Du solltest den "gesäuberten" Wert natürlich auch wieder in die Zelle schreiben. Sonst geht er am Ende das Makros verloren. Beim Schreiben in die Zelle siehst Du dann, daß das Entfernen von Chr(13) völlig ausreicht, denn das ist der Zeilenumbruch.
Also vor dem End Sub noch ein Range("G6").value=strText einfügen.
Gruß- Micha
Bild

Betrifft: AW: Zeilenumbruch aus TextBox stört
von: Herbert
Geschrieben am: 18.04.2005 23:09:10
Hallo Micha und Luc,
genau, das war jetzt der entscheidende Schritt - funzt jetzt.
Danke und Gruß Herbert
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zeilenumbruch aus TextBox stört"