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

Forumthread: Zeilenumbruch Textbox die 100ste...

Zeilenumbruch Textbox die 100ste...
Gegga
Nach vielem Herumprobieren und nicht ganz zufrieden sein, Fragen stellen hier im Forum und einer klasse Unterstützung, kann ich nun meinen Wunsch genau präzisieren
Ich benötige folgendes:
Textbox Multiline, das schon während der Eingabe folgendes macht:
Nach 35 Zeichen such das letzte vorhergehende Leerzeichen, und füge danach einen Strichpunkt und einen Zeilenumbruch (Wie wenn ich Shift+Enter drücke!!!) ein. Dann zähle in der zweiten Zeile wieder bis 35 und mache das selbe wieder.
(Also, es sollten nie mehr als 35 Zeichen in einer Zeile meiner Textbox drin stehen.)
Nach 5 Zeilen soll eine Meldung sich öffen, Das die max. Grösse erreicht ist, und eine weitere Eingabe soll verhindert werden. Allerdings möchte ich nicht das dann die komplette TB gesperrt ist.
Evtl. will ja der User seinen Text noch überarbeiten.
Beim Eintragen dieser Textbox in ein Sheet, sollen dann die gesetzen Zeilenumbrüche alle gelöscht werden, so das nur noch die Strichpunkte stehen bleiben.
Dann würde ich gerne diesen Code laufen lassen und hätte "optisch" auf meinem Tabellenblatt das gleiche Aussehen wie in meiner Textbox :)
Sub Umbruch_BEZEICHUNG()
Dim Pos As Integer, Cell As Range, ii As Integer
Range("F45:F5000").Select
Const Sep = ";"
For Each Cell In Selection
ii = 0
Pos = InStr(Cell, Sep)
While Pos > 0
ii = ii + 1
If Pos 

Das Prob bei meinen bisher gestellten Fragen war immer, das der "automatische" Textumbruch der Textbox, nicht berücksichtigt werden kann.
Da es später aber viele User geben wird, die beim Tippen die Augen auf der Tastatur haben und nicht am Bildschirm ;) und sie nicht mitbekommen ob es nun ein gewollter Umbruch ist oder nicht, und es zu unnötigen Fehlern bez. der "Optik" des später auszudruckenden Sheets kommen würde, benötige ich diese Variante.
Danke nochmals für eure Eselsgeduld und die evtl. Hilfe!!!!
Gruß Gegga
Anzeige
AW: Zeilenumbruch Textbox die 100ste...
11.09.2010 07:45:27
Oberschlumpf
Nach 35 Zeichen such das letzte vorhergehende Leerzeichen
(Also, es sollten nie mehr als 35 Zeichen in einer Zeile meiner Textbox drin stehen.)
Nach 5 Zeilen soll eine Meldung sich öffen, Das die max. Grösse erreicht ist
1. Wenn ich nach 35 Zeichen, das letzte vorhergehende Leerzeichen finde, und direkt danach n Umbruch einfüge, wird keine einzige Zeile auf 35 Zeichen kommen.
2. Wenn ich Schritt 1 trotzdem durchführe, muss ja der "überstehende" Text in die nächste(n) Zeilen verschoben werden. Und so kann es passieren - das Risiko ist recht hoch - dass durch das Einfügen von Umbrüchen mehr als 6 Zeilen - immer noch pro Zeile weniger als 35 Zeichen - entstehen.
Und somit wird der Anwender oft darauf hingewiesen, dass er den Text ändern soll, bis nur 5 Zeilen übrig bleiben.
Entweder hast du nicht fertig überlegt, oder ich habs nicht verstanden.
Schön wäre...
...eine Datei mit Daten und nem Bsp-Bild, wie das Ergebnis aussehen soll (sowohl in Textbox, als auch in Zelle)
...eine Begrüßung am Anfang jeder deiner Beiträge
Ciao
Thorsten
Anzeige
AW: Zeilenumbruch Textbox die 100ste...
13.09.2010 08:55:25
Gegga
Guten Morgen Thorsten und all die anderen
Habe mal eine kleine Mappe angefügt und soweit mal reingeschreiben, wie ich es meinte.
Vielleicht isses so etwas verständlicher...
Gruß Gegga
https://www.herber.de/bbs/user/71500.xls
Anzeige
AW: Zeilenumbruch Textbox die 100ste...
11.09.2010 08:20:21
fcs
Hallo Gegga,
das Grundproblem bei der Zeilenschaltung in einer Userform-Textbox ist,
dass die Zeilenschaltung aus 2 Zeichen besteht. Zeichen 13 + Zeichen 10.
Das muss man bei allen Versuchen, die Länge des Textes und/oder Anzahl Zeilen zu kontrollieren, berücksichtigen.
Ich komm aber zur Zeit nicht dazu eine entsprechende Function zu schreiben, die den Eingabetext analysiert und ggf. online in der Textbox anpasst, falls erforderlich.
Gruß
Franz
Anzeige
Zeilenumbruch und Zeichenzahl in Userform-Textbox
13.09.2010 08:21:38
fcs
Hallo Gegga,
hier eine Beispieldatei mit 2 Userformvarianten. Ich empfehle die Variante zu benutzen, die den Text erst nach dem Verlassen der Userbox umformatiert (sprich Zeilenwechsel einfügt).
https://www.herber.de/bbs/user/71499.xls
Die Idee mit dem Semikolon im Text ist nicht optimal, denn dann dürften im Text keine Semikolon eingefügt werden. Ich hab im Userform eine Alternative eingbaut, die den Text direkt in mehrere Zellen untereinander einfügt.
Gruß
Franz
P.S.:
Generell würde ich aber trotzdem empfehlen, den Text im Tabellenblatt in einer Zelle zu halten. Dazu müßte man dann im Textbox-Text "nur" das Zeichen 13 durch einen Leerstring ersetzen und im Tabellenblatt die Zeilenhöhe jeweils einstellen oder die von mir sonst nicht so geliebten verbundenen Zellen verwenden.
Anzeige
AW: Zeilenumbruch und Zeichenzahl in Userform-Textbox
13.09.2010 10:23:51
Gegga
Guten Morgen Franz
Wow... das das so einen "Aufwand" ergibt, hätte ich nicht gedacht...
Vielen Dank dafür!!!!
Werde das nachher mal in meine Liste basteln und wenns Fragen gibt, mich nochmals melden!!!
Gruß Gegga
AW: Zeilenumbruch und Zeichenzahl in Userform-Textbox
13.09.2010 14:09:58
Gegga
Hallo Franz...
Ich würde gerne die zweite Variante benutzen (Überprüfung im Hintergrund) und benötige für 2 Dinge nochmals deine Hilfe:
Einen "gewollten Textumbruch" (Shift+Enter) wird hier nun aber nicht berücksichtigt? Wäre es ein grosser Aufwand dies noch mit einzufügen?
und hier:
Private Sub CB_Eintragen_Click()
Dim ii As Integer, vSplit, Zeile As Long
Dim wks As Worksheet
Set wks = ActiveSheet
With wks
'Alte Inhalte Löschen
.Range("F45:F49").ClearContents
'Textboxinhalt ab Zeile 45 in Spalte F eintragen
Zeile = 45
If Me.TextBox1.Value  "" Then
vSplit = Split(Replace(Me.TextBox1.Value, Chr(13), ""), Chr(10))
For ii = LBound(vSplit) To UBound(vSplit)
.Cells(Zeile, 6) = vSplit(ii)
Zeile = Zeile + 1
Next
End If
End With
Range("A1").Select
Unload Me
End Sub
wird der Textboxinhalt ja in die betreffende Zelle eingetragen. Lässt sich hier evtl noch einfügen:
Finde letzte ausgefüllte Zelle in Spalte F und springe 2 ZEILEN runter.
Grund hierfür ist, das in meiner Eingabe UF nach der ersten Eintragung weitere Eintragungen gemacht werden sollen. Ich will ja nicht das das zuvor eingetragene überschrieben wird, sondern drunter angefügt wird mit 2 Zeilen abstand dazwischen...
Wäre nett wenn du nochmals helfen könntest, DANKE!!!
Und noch eine kleine Frage (um diesen Code evtl. für weitere Textboxen für die Zukunft nutzen zu können:
Verstehe ich es richtig, das hier:
Private Sub TextBox1_Change()
Call AnalyseText(TextBox1.Text, 35, 5)
bTest = False
End Sub
35,5 die Zeichenlänge und die Zeilenanzahl bestimmt wird?
Gruß Gegga
Anzeige
AW: Zeilenumbruch und Zeichenzahl in Userform-Textbox
14.09.2010 07:30:50
fcs
Hallo Gegga,
ganz einfach war es nicht eingegebene Zeilenumbrüche zu erhalten. Die durch Zeilenumbrüche getrennten Textteile werden jetzt in einer ersten Schleife separat analysiert und inklusive Zeilenschaltungen wieder zusammengesetzt. Anschließend wird der gesamte neue Text nochmals analysiert. Das Ganze passiert in 2 geschachtelten Function-Aufrufen.
Die Einfügen-Prozedur hab ich angepasst, so dass die Einfüge-Zeile variabel ermittelt wird.
Die Parameter in der Aufrufanweisung hast dukorrekt verstanden. Zum leichteren Verständnis hab ich die Parameternamen jetzt mit in den Funktionsaufruf eingebaut.
Wegen der zahlreichen Änderungen am Code des Userforms hier der komplette Code als Textdatei.
https://www.herber.de/bbs/user/71518.txt
Gruß
Franz
Anzeige
VIELEN, VIELEN DANK!!!!
14.09.2010 07:45:09
Gegga
Guten Morgen Franz
Vielen Dank für diese Mühe!!!
Ich habe mir das ehrlich gesagt etwas einfacher vorgestellt :)
Aber so isses wirklich perfekt!!!
Gruß Gegga
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeilenumbruch in Excel-Textboxen optimieren


Schritt-für-Schritt-Anleitung

  1. Textbox erstellen: Füge eine Textbox in dein Excel-Arbeitsblatt ein. Stelle sicher, dass die Textbox auf "Multiline" gesetzt ist.

  2. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  3. Code für Zeilenumbruch einfügen: Füge diesen VBA-Code in das entsprechende Modul ein, um den Zeilenumbruch nach 35 Zeichen zu implementieren:

    Private Sub TextBox1_Change()
       Call AnalyseText(TextBox1.Text, 35, 5)
    End Sub
    
    Sub AnalyseText(ByVal InputText As String, ByVal MaxChars As Integer, ByVal MaxLines As Integer)
       Dim Lines() As String
       Dim Result As String
       Dim i As Integer
    
       Lines = Split(InputText, vbCrLf)
       For i = LBound(Lines) To UBound(Lines)
           If Len(Lines(i)) > MaxChars Then
               Lines(i) = Left(Lines(i), MaxChars) & vbCrLf
           End If
           Result = Result & Lines(i)
       Next i
    
       TextBox1.Text = Result
    End Sub
  4. Textbox in Zelle eintragen: Verwende folgenden Code, um die Inhalte der Textbox in eine Zelle einzutragen:

    Private Sub CB_Eintragen_Click()
       Dim ii As Integer, Zeile As Long
       Dim wks As Worksheet
       Set wks = ActiveSheet
    
       ' Alte Inhalte löschen
       wks.Range("F45:F49").ClearContents
    
       ' Textboxinhalt ab Zeile 45 in Spalte F eintragen
       Zeile = 45
       If Me.TextBox1.Value <> "" Then
           vSplit = Split(Replace(Me.TextBox1.Value, Chr(13), ""), Chr(10))
           For ii = LBound(vSplit) To UBound(vSplit)
               wks.Cells(Zeile, 6) = vSplit(ii)
               Zeile = Zeile + 1
           Next
       End If
       Range("A1").Select
       Unload Me
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Zeilenumbrüche werden nicht beachtet
    Lösung: Achte darauf, dass die Zeilenumbrüche in der Textbox aus zwei Zeichen bestehen (Chr(13) und Chr(10)). Diese müssen in deinem Code korrekt behandelt werden.

  • Fehler: Maximum der Zeilen überschritten
    Lösung: Implementiere eine Prüfung, die den Benutzer warnt, wenn er 5 Zeilen überschreitet. Du kannst dazu eine einfache If-Bedingung verwenden.


Alternative Methoden

  • Verwendung von Word-Textfeldern: Wenn Excel nicht die gewünschten Ergebnisse liefert, kannst du auch Word-Textfelder nutzen, die oft flexibler im Umgang mit Zeilenumbrüchen sind.

  • Textfeld in PDF-Formularen: Wenn du ein PDF-Formular erstellst, kannst du ebenfalls Zeilenumbrüche einfügen. Beachte dabei die spezifischen Eigenschaften des PDF-Editors.


Praktische Beispiele

  • Textbox mit automatischem Zeilenumbruch: Erstelle eine Userform in Excel, die eine Textbox enthält. Verwende die oben beschriebenen VBA-Codes, um sicherzustellen, dass der Text automatisch umgebrochen wird, während der Benutzer tippt.

  • Datenbankeinträge: Nutze eine Textbox in einem Formular, um Daten zu sammeln, und trage diese anschließend in ein Excel-Blatt ein, wobei die Textformatierung beibehalten wird.


Tipps für Profis

  • Zeilenabstand ändern: Um den Zeilenabstand in einer Textbox zu ändern, kannst du den TextBox1.LineSpacing verwenden, um den Abstand zwischen den Zeilen anzupassen.

  • Multiline-Eingaben: Stelle sicher, dass die Textbox die MultiLine-Eigenschaft auf True hat, damit Benutzer mehrzeilige Texte eingeben können.

  • Suchsymbol für Zeilenumbrüche: Verwende das Zeilenumbruch-Symbol, um dem Benutzer visuell zu helfen, wo er seine Eingaben aufteilen kann.


FAQ: Häufige Fragen

1. Wie setze ich einen Zeilenumbruch in einer Excel-Textbox?
Du kannst die vbCrLf-Konstanten verwenden, um einen Zeilenumbruch in einer Textbox zu erzeugen.

2. Was passiert, wenn ich mehr als 35 Zeichen eingebe?
Der VBA-Code wird den Text automatisch umbrechen und sicherstellen, dass nicht mehr als 35 Zeichen pro Zeile eingegeben werden.

3. Kann ich die maximale Anzahl an Zeilen in der Textbox festlegen?
Ja, im Code kannst du die maximale Anzahl an Zeilen anpassen, indem du die Bedingungen entsprechend änderst.

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