Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1172to1176
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
Nach x Zeichen neue Zeile in Textbox
Gegga
Hallo da draussen...
2 Fragen:
Habe eine Textbox (TB_SONSTIGES), diese soll "automatisch", schon während der Eingabe, nach 40 Zeichen letzten letzten Leerzeichen automatisch eine neue Zeile beginnen. Nach max. 179 Zeichen sollte eine Message Box aufgehen mit dem Hinweis "Max. Zeichenanzahl erreicht"
Des Weiteren sollte der Text genauso wie er "optisch" in der Textbox nach Click auf Commandbutton "Eintragen" in SHEET "ANFR" Zeile 63 Spalte N eingetragen werden.
Der Grund hierfür ist, die Zelle hat nur eine bestimmte Breite bzw. Höhe, die nach Möglichkeit nicht überschritten werden soll um mir einen einwandfreien Druck zu gewährleisten.
Will ich zuviel und funktioniert das überhaupt?
LG Gegga
AW: Nach x Zeichen neue Zeile in Textbox
06.09.2010 10:36:11
JogyB
Hallo Gegga,
soll es das letzte Leerzeichen vor den 40 Zeichen oder das erste Leerzeichen nach 40 Zeichen nehmen?
Gruß, Jogy
AW: Nach x Zeichen neue Zeile in Textbox
06.09.2010 10:42:35
Gegga
Hi Jogy
hmmm am besten eigentlich vor, weil wenn ein recht langes Wort dei 40er Marke überschreitet, sprengt es ja wieder die Spalten breite...
Gruß Gegga
P.S. Um noch meinen anderen Thread vollends abzuschliessen (Auslesen der verwendeten Controls in einer Userform), Code hat gefunzt, danke Jogy. Excel nochmals beendet, neu gestartet und schon ging es, k.A. warum ;)
AW: Nach x Zeichen neue Zeile in Textbox
06.09.2010 12:12:36
JogyB
Hallo Gegga,
probier das mal aus... hat ein wenig länger gedauert, weil ich gleich in der TextBox mit vbLf arbeiten wollte, nur das wird beim Eintrag automatisch zu vbCrLf, was dann Probleme macht... und ich habe lange rumgerätselt, was da eigentlich falsch läuft ;)
Private Sub CommandButton1_Click()
' Ersetzt das vbNewLine durch ein vbLf, kann beim Druck sonst Probleme machen
' (Steuerzeichen am Ende der Zeile(
ThisWorkbook.Sheets("ANFR").Cells(63, 14).Value = Replace(TextBox1.Value, vbNewLine, vbLf)
' Geht hier dann gleich raus
Unload Me
End Sub
Private Sub TextBox1_Change()
Dim myString As String
Dim foundBlank As Long
Dim lastBlank As Long
Dim umBruch As Long
Dim i As Long
Static inUse As Boolean
If inUse Then Exit Sub
' Alle Zeilenumbrüche weg
myString = Replace(TextBox1.Value, vbNewLine, " ")
' Wenn Textlänge > 40 oder schon ein Umbruch vorhanden
If Len(myString) >= 40 Or CBool(InStr(TextBox1.Value, vbNewLine)) Then
foundBlank = InStr(1, myString, " ")
While foundBlank  0
' Wenn mehr als 40 Zeichen zu letztem Umbruch
If foundBlank - umBruch > 40 Then
myString = Left(myString, lastBlank - 1) & vbNewLine & _
Mid(myString, lastBlank + 1)
umBruch = lastBlank
End If
lastBlank = foundBlank
foundBlank = InStr(foundBlank + 1, myString, " ")
Wend
' Nun noch nachschauen, ob am Ende ein Umbruch notwenig ist
If Len(myString) - umBruch >= 40 And lastBlank  Len(myString) Then
myString = Left(myString, lastBlank - 1) & vbNewLine & Mid(myString, lastBlank + 1)
End If
inUse = True
TextBox1.Value = myString
inUse = False
End If
End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Len(Replace(TextBox1.Value, vbLf, " ")) >= 179 Then
KeyAscii = 0
Call MsgBox("Maximale Zeichenzahl erreicht!", vbExclamation)
End If
End Sub

Die Namen der Controls musst Du natürlich noch anpassen.
Gruß, Jogy
Anzeige
AW: Nach x Zeichen neue Zeile in Textbox
06.09.2010 15:53:48
Gegga
Hallo Jogy, erstmal danke für deine Hilfe!!!
Habs mal "auf die schnelle" eingefügt und getestet...
Aber da läuft irgendetwas falsch...
Bei Eingabe in der Textbox macht er mir nach 40 Zeichen lediglich das Symbol eines Textumbruches und bei click auf eintragen, trägt er einen Teil in die gewünschte Zelle ein, alles weitere trägt er in weitere untenstehende Zellen ein, die das gleiche Format erhalten wie die gewünschte und zerschiesst mir somit das komplette Blatt.
Bin noch auf der Arbeit, werde mich heute abend mal dransetzen und dir meine Mappe mal hochladen. Vllt erkennst du so besser wo "der Hund begraben liegt".
Greetz Gegga
Anzeige
AW: Nach x Zeichen neue Zeile in Textbox
06.09.2010 15:57:14
JogyB
Hallo Gegga,
MultiLine hast Du bei der TextBox auf True?
Gruß, Jogy
AW: Nach x Zeichen neue Zeile in Textbox
06.09.2010 21:23:09
Gegga
Hallo Jogy
OK, das setzen von Multiline bei der Textbox hat das Prob mit dem Symbol für Return erledigt, jedoch nicht das
Eintragen in weitere Zeilen.
Kann es sein das es an dem liegt, das es sich hierbei um eine verbunden Zelle handelt?
Habe die Mappe nun mal hochgeladen. Falls Erklärungsbedarf bitte melden.
Gruß Gegga
https://www.herber.de/bbs/user/71409.xls
AW: Nach x Zeichen neue Zeile in Textbox
06.09.2010 22:29:30
Daniel
Hi
wenn du die Eingabetextbox genauso gross machst und mit der gleichen Schriftart und -grösse formatierst wie dein Eingabefeld in der Zelle, dann sollte es eigentlich kein Problem geben, die richtige Grösse abzuschätzen, weil dann Zeilenumbruch und Zeilenanzahl von Textbox und Zelle gut übereinstimmen.
Außerdem kannst du mit der Textboxeigenschaft .LineCount dann abfragen, wieviele Zeilen deine Texbox enthält (automatische und erzwungene) und ob es ggf schon zu viele sind.
Das Zählen von Zeichen allein ist unzuverlässig, da dein Text länger sein kann, wenn er viele "i" und "l" enthält.
sollten hingeben viele "W" und "M" vorhanden sein, wird der anzeigbare Text viel kürzer.
Ebenso ist das WordWrap eine schwer abschätzbare grösse, da du bei langen Wörtern, die komplett in die nächste Zeile übernommen werden, viel Platz verschenkst.
mit der oben genannten Methode vermeidest du all diese Probleme, da Excel das quasi automatisch für dich berechnet.
Außerdem ist es für den Anwender angenehmer, wenn er den Text bei der Eingabe schon so sieht, wie er auf dem Dokument erscheint. Das spart Arbeit durch wiederholtes eingeben.
Gruß, Daniel
Anzeige
AW: Nach x Zeichen neue Zeile in Textbox
07.09.2010 06:20:43
Gegga
Moin Daniel...
Hört sich alles ziemlich stimmig an, aber hättest du mir vllt ne kleines Beispiel dafür?
Hier läuft gerade alles "learning by doing" und das hier ist mir völlig neu...
Wäre klasse, ween mir n Beispiel oder nen Link parat hättest...
Greetz Gegga
AW: Nach x Zeichen neue Zeile in Textbox
06.09.2010 22:47:19
JogyB
Hallo Gegga,
das Problem ist Deine Worksheet_Change Prozedur im Sheet ANFR, die schneidet nach 40 Zeichen ab.
Außerdem solltest Du Dir ziemlich genau überlegen, wann deren Ausführung notwendig ist, das Eintragen dauert recht lange. Mit Application.EnableEvents = False kannst Du das Ausführen der Ereignisprozeduren auf dem Arbeitsblatt (nicht im UserForm!) verhindern. Das solltest Du insbesondere dann verwenden, wenn eine Ereignisprozedur (also z.B. das Worksheet_Change) etwas ändert, denn sonst wird das dadurch wieder aufgerufen... und wieder... und wieder... im schlimmsten Fall gibt das eine Endlosschleife. Aber nicht vergessen, das auch wieder auf True zu setzen.
Zudem trägst Du gleich zwei Mal in die Zelle N63 ein, einmal mit
Sheets("ANFR").Range("N63") = TB_SONSTIGES.Text
und dann noch mit dem von mir vorgeschlagenen
ThisWorkbook.Sheets("ANFR").Cells(63, 14).Value = Replace(TB_SONSTIGES.Value, vbNewLine, vbLf)
Da reicht eines von beiden, wobei ich das mit dem Replace-Befehl nehmen würde, da - wie im Kommentar erwähnt - sonst beim Ausdruck ein Steuerzeichen gedruckt werden könnte. Das kannst Du natürlich auch mit
Sheets("ANFR").Range("N63") = Replace(TB_SONSTIGES.Value, vbNewLine, vbLf)
machen.
Gruß, Jogy
Anzeige
AW: Nach x Zeichen neue Zeile in Textbox
07.09.2010 06:22:55
Gegga
Moin Jogy...
Diese Worksheet_Change Prozedur hatte ich total vergessen zu löschen, hatte diese aus einem anderen Beispiel versucht mir umzubauen, mit nicht akzeptablem Ergebnis. Nach dem ich dies gelöscht habe, funktioniert es einwandfrei!!!!
Vielen, vielen Dank nochmal!
Gruß Gegga

321 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige