Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1920to1924
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
Zeichen und Zeilen begrenzen in TextBox
15.02.2023 09:01:20
Ron
Hallo
Ich bräuchte etwas Hilfe.
Der Inhalt einer Textbox soll in ein Formular übertragen werden.
In das Formular passen nur 100 Zeichen verteilt auf drei Zeilen.
Wenn jetzt jemand die 100 Zeichen in der TexBox auf 4 Zeilen verteilt, ist die vierte Zeile im Formular nicht mehr sichtbar.
Wie bekomme ich es hin, dass dem Benutzer maximal 100 Zeichen, verteilt auf 3 Zeilen (also maximal 2 Zeilenumbrüche ) zur Verfügung stehen?
Hier mein derzeitiger Code
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Label1.Caption = "Noch " & CStr(100 - Len(TextBox1.Value)) & " Zeichen von 100"
End Sub
Private Sub TextBox1_Change()
  If TextBox1.TextLength > 100 Then
    TextBox1.BackColor = RGB(255, 0, 0)
    MsgBox "Zu viele Zeichen!"
  Else
    TextBox1.BackColor = RGB(255, 255, 255)
  End If
End Sub

Vielen Dank

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeichen und Zeilen begrenzen in TextBox
15.02.2023 09:50:33
ChrisL
Hi
Prinzip beibehalten. Annahme Zeilenumbruch = Shift + Enter.
Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Label1.Caption = "Noch " & CStr(100 - Len(TextBox1.Value)) & " Zeichen von 100" & Chr(10) _
                    & "Noch " & 2 - ZaehleZeilenschaltung(TextBox1.Text) & " Zeilenschaltungen von 2"
End Sub
Private Sub TextBox1_Change()
  If TextBox1.TextLength > 100 Or ZaehleZeilenschaltung(TextBox1.Text) > 2 Then
    TextBox1.BackColor = RGB(255, 0, 0)
    MsgBox "Zu viele Zeichen!"
  Else
    TextBox1.BackColor = RGB(255, 255, 255)
  End If
End Sub
Private Function ZaehleZeilenschaltung(strText As String) As Integer
Dim i As Integer
For i = 1 To Len(strText)
    If Mid(strText, i, 1) = Chr(10) Then ZaehleZeilenschaltung = ZaehleZeilenschaltung + 1
Next i
End Function
cu
Chris
Anzeige
AW: Zeichen und Zeilen begrenzen in TextBox
15.02.2023 10:53:24
Ron
Hallo Chris,
das funktioniert ganz gut, wenn der Nutzer selbst den Zeilenumbruch macht.
Wenn der Nutzer aber fortlaufend schreibt, erfolgt ja nach Erreichen der rechten Seite ein automatischer Umbruch.
Dieser wird nicht mitgezählt und somit stehen wieder mehr Zeilen zur Verfügung, die im Formular nicht angezeigt werden.
Gib es dafür eine Lösung? Vielleicht mit Zeichenbegrenzung je Zeile oder so? Aber dann würden ja die Wörter willkürlich getrennt.
Gruß
AW: Zeichen und Zeilen begrenzen in TextBox
15.02.2023 10:59:47
ChrisL
Hi
Hierfür sehe ich keine Möglichkeit. Wenn du eine nichtproportionale Schriftart (z.B. Courier) verwendest d.h. alle Buchstaben sind gleich breit, dann lässt sich die Textgrösse etwas besser (nicht komplett z.B. bei sehr langen Wörtern) über die Zeichenzahl kontrollieren.
cu
Chris
Anzeige
AW: Zeichen und Zeilen begrenzen in TextBox
15.02.2023 11:07:14
ChrisL
ups, es gibt LineCount... siehe Antwort Rudi ;)
AW: Zeichen und Zeilen begrenzen in TextBox
16.02.2023 07:42:26
Ron
Hallo,
vielen Dank für die Hilfe.
Jetzt funktionert alles super.
Hier mein Code:
Private Sub TextBox1_Change()
    
    TextBox1.SetFocus
'        Label1.Caption = "LineCount = " & TextBox1.LineCount
'        Label2.Caption = "TextLength = " & TextBox1.TextLength
        
        Label1.Caption = "Noch " & CStr(100 - Len(TextBox1.Value)) & " Zeichen von 100"
        Label2.Caption = "Noch " & CStr(4 - TextBox1.LineCount) & " Zeilen von 4"
    If TextBox1.TextLength > 100 Or TextBox1.LineCount > 4 Then
        TextBox1.BackColor = RGB(255, 0, 0)
        MsgBox "Zu viele Zeichen!"
    Else
        TextBox1.BackColor = RGB(255, 255, 255)
    End If
    
End Sub
Gruß
Anzeige
AW: Zeichen und Zeilen begrenzen in TextBox
15.02.2023 10:58:59
Rudi
Hallo,
TextBoxen haben eine MaxLength-Eigenschaft. Lege die auf 100 fest. Dann sparst du dir die Prüfung der Länge.
Die Umbrüche:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  With TextBox1
    If (Len(.Text) - Len(Replace(.Text, Chr(10), ""))) > 2 Then
      MsgBox "Zu viele Umbrüche"
      Cancel = True
    End If
  End With
End Sub
Gruß
Rudi
Zusatz
15.02.2023 11:02:01
Rudi
es gibt auch noch LineCount
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
  With TextBox1
    If .LineCount > 3 Then
      MsgBox "Zu viele Umbrüche"
      Cancel = True
    End If
  End With
End Sub

Anzeige

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige