Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1176to1180
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
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
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
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

299 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige