Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Nach x Zeichen neue Zeile in Textbox

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
Anzeige
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 ;)
Anzeige
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
Anzeige
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
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Automatischer Zeilenumbruch in einer Excel-Textbox


Schritt-für-Schritt-Anleitung

Um einen automatischen Zeilenumbruch in einer Excel-Textbox nach einer bestimmten Zeichenanzahl zu implementieren, folge diesen Schritten:

  1. Textbox erstellen: Füge eine Textbox (z.B. TB_SONSTIGES) zu deinem UserForm hinzu.

  2. Command Button hinzufügen: Füge einen Command Button hinzu, um den Text in die Zelle zu übertragen.

  3. Code einfügen: Kopiere den folgenden VBA-Code in das Code-Fenster des UserForms:

    Private Sub CommandButton1_Click()
        ThisWorkbook.Sheets("ANFR").Cells(63, 14).Value = Replace(TextBox1.Value, vbNewLine, vbLf)
        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
    
        myString = Replace(TextBox1.Value, vbNewLine, " ")
    
        If Len(myString) >= 40 Or CBool(InStr(TextBox1.Value, vbNewLine)) Then
            foundBlank = InStr(1, myString, " ")
            While foundBlank > 0
                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
    
            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
  4. Textbox-Eigenschaft anpassen: Stelle sicher, dass die Eigenschaft MultiLine der Textbox auf True gesetzt ist.


Häufige Fehler und Lösungen

  • Problem: Text wird nicht richtig umgebrochen.

    • Lösung: Überprüfe, ob die Eigenschaft MultiLine der Textbox aktiviert ist.
  • Problem: Eintrag in mehrere Zellen anstelle einer Zelle.

    • Lösung: Stelle sicher, dass du nur einen Eintrag in die Zelle machst, z.B. durch den Replace-Befehl im Code.
  • Problem: Nachricht über maximale Zeichenanzahl erscheint nicht.

    • Lösung: Prüfe die Bedingung, die die Zeichenanzahl prüft. Stelle sicher, dass die Grenze von 179 Zeichen korrekt gesetzt ist.

Alternative Methoden

Wenn du eine andere Methode zur Handhabung von Text in einer Textbox suchst, kannst du auch die WordWrap-Eigenschaft verwenden. Diese ermöglicht es Excel, den Text automatisch in die nächste Zeile zu verschieben, wenn das Textfeld nicht groß genug ist.


Praktische Beispiele

Hier ist ein Beispiel für die Anwendung:

  1. Erstelle ein UserForm mit einer Textbox und einem Command Button.
  2. Füge den obigen VBA-Code ein.
  3. Teste die Eingabe von Text mit mehr als 40 Zeichen und beobachte, wie der Text umgebrochen wird.

Wenn du z.B. "Dies ist ein Testtext, der länger als 40 Zeichen ist" eingibst, wird der Text automatisch in die nächste Zeile umgebrochen.


Tipps für Profis

  • Nutze die .LineCount-Eigenschaft der Textbox, um die Anzahl der Zeilen zu zählen und die Benutzererfahrung zu verbessern.
  • Vermeide es, die Worksheet_Change-Prozedur unnötig oft auszuführen. Setze Application.EnableEvents = False während des Eintrags und aktiviere es danach wieder.
  • Achte darauf, dass die Textbox die gleiche Größe und Schriftart wie das Zielzellenformat hat, um Inkonsistenzen zu vermeiden.

FAQ: Häufige Fragen

1. Wie viele Zeichen kann ich maximal in die Textbox eingeben? Die maximale Zeichenanzahl beträgt 179, bevor eine Warnmeldung erscheint.

2. Kann ich die Textbox so einstellen, dass sie den Text automatisch umbricht? Ja, setze die MultiLine-Eigenschaft der Textbox auf True, um einen automatischen Zeilenumbruch zu ermöglichen.

3. Was passiert, wenn ich mehr als 40 Zeichen eingebe? Der Text wird automatisch umgebrochen, wobei der letzte Umbruch vor dem letzten Leerzeichen erfolgt, um lange Wörter zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige