Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Userform Länge Textbox genau festlegen

Userform Länge Textbox genau festlegen
steffen
Hallo Leuts,
ich suche eine Möglichkeit, um festzulegen ,dass in einer Textbox innerhalb einer Userform genau 3 Zeichen (Zahlenwerte 0-9) eingetragen werden müssen.
Bsp:
---------------------
1 nicht erlaubt
01 nicht erlaubt
001 erlaubt
---------------------
89 nicht erlaubt
089 erlaubt
---------------------
f01 nicht erlaubt
Also zusammenfassend:
Es dürfen nur Werte von 001 bis 999 eingetragen werden. Alles andere ist nicht erlaubt.
Ihr wisst sicherlich Rat.
Gruß Steffen
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Userform Länge Textbox genau festlegen
30.04.2010 19:25:43
Hajo_Zi
Hallo Steffen,
Eigenschaft maxLenght einstellen.
Option Explicit
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' Eingaben nur Zahlen
' maxLenght =3 in Eigenschaften einstellen
If Len(TextBox1) >= 1 Then
Select Case KeyAscii
Case 48 To 57
Case Else: KeyAscii = 0
End Select
Else
Select Case KeyAscii
Case 49 To 57
Case Else: KeyAscii = 0
End Select
End If
End Sub


Anzeige
AW: Userform Länge Textbox genau festlegen
30.04.2010 19:35:37
steffen
Hallo hajo,
danke für die schnelle Hilfe.
auf max. 3 zeichne zu begrenzen hatte ich mit maxLenght 3 noch hinbekommen....
aber was passiert eigentlich genau bei Deiner Lösung? da fehlt mir echt das notwendige hintergrundwissen Ascii
Gruß
Steffen
AW: Userform Länge Textbox genau festlegen
30.04.2010 19:38:18
Hajo_Zi
Hallo Steffen,
das was im Code steht es dürfen nur Zahlen eingeben werden und bei der ersten Zahl keine 0
Gruß Hajo
Anzeige
AW: Userform Länge Textbox genau festlegen
30.04.2010 21:08:34
Erich
Hi,
"001" und "023" sollten aber doch auch erlaubt sein, nur "000" nicht.
Das geht mit Hajos Code auch, aber nur, indem man als 1. Ziffer eine Ziffer > 0 eingibt,
dann den Cursor davor stellt und eine 0 eingibt. Erscheint mir umständlich.
Mein Vorschlag:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If TextBox1 = "00" Then
Select Case KeyAscii
Case 49 To 57
Case Else: KeyAscii = 0
End Select
Else
Select Case KeyAscii
Case 48 To 57
Case Else: KeyAscii = 0
End Select
End If
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
oder kürzer so
30.04.2010 21:14:26
Erich
Hi,
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 - (TextBox1 = "00") To 57
Case Else: KeyAscii = 0
End Select
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Userform Länge Textbox genau festlegen
30.04.2010 19:30:31
Gerd
Hallo Steffen,
ins Userformmodul:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Not IsNumeric(ChrW(KeyAscii)) Then KeyAscii = 0
End Sub

Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1 = Format(TextBox1, "000")
End Sub
Die MaxLenght kannst Du im Eigenschaften-Fenster einstellen.
Gruß Gerd
Anzeige
;

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

Userform: Länge der Textbox exakt festlegen


Schritt-für-Schritt-Anleitung

Um die Länge einer Textbox in einer Userform genau auf 3 Zeichen (Zahlenwerte 0-9) festzulegen, kannst du den folgenden VBA-Code verwenden. Dieser Code stellt sicher, dass nur die Eingaben "001" bis "999" zulässig sind:

  1. Öffne die Excel-Datei und gehe in den VBA-Editor (Alt + F11).
  2. Füge eine Userform hinzu und platziere eine Textbox (z.B. TextBox1) auf der Userform.
  3. Klicke mit der rechten Maustaste auf die Userform und wähle "Code anzeigen".
  4. Füge den folgenden Code in das Userform-Modul ein:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Len(TextBox1) >= 3 Then KeyAscii = 0 'Maximal 3 Zeichen
    If Not (KeyAscii >= 48 And KeyAscii <= 57) Then KeyAscii = 0 'Nur Zahlen
    If Len(TextBox1.Text) = 0 And KeyAscii = 48 Then KeyAscii = 0 'Keine führende Null
End Sub
  1. Speichere die Änderungen und teste die Userform.

Häufige Fehler und Lösungen

  • Problem: Die Eingabe "000" wird akzeptiert.

    • Lösung: Stelle sicher, dass der Code zur Überprüfung der führenden Nullen korrekt implementiert ist. Der obige Code blockiert die Eingabe von "0" als erstes Zeichen.
  • Problem: Die Textbox akzeptiert mehr als 3 Zeichen.

    • Lösung: Vergewissere dich, dass die Überprüfung der Länge korrekt eingestellt ist. Der Code blockiert weitere Eingaben, wenn 3 Zeichen bereits eingegeben wurden.

Alternative Methoden

Es gibt verschiedene Ansätze, um die Eingabe in einer Textbox zu validieren:

  • Verwendung von maxLength: Setze die maxLength-Eigenschaft der Textbox auf 3. Dies verhindert die Eingabe von mehr als 3 Zeichen, aber nicht die Eingabe von ungültigen Werten.

  • InputMask: Eine InputMask kann verwendet werden, um die Eingabe zu formatieren, jedoch ist dies in Excel VBA nicht direkt möglich.


Praktische Beispiele

Hier sind einige Beispiele, um die Funktionsweise zu verdeutlichen:

  • Wenn der Benutzer "0" eingibt, wird dies abgelehnt.
  • Wenn der Benutzer "01" eingibt, wird dies ebenfalls abgelehnt.
  • Wenn "001" eingegeben wird, ist dies erlaubt.
  • "089" wird akzeptiert, während "89" abgelehnt wird.

Tipps für Profis

  • Verwende TextBox1_BeforeUpdate, um die Eingabe zu formatieren:
Private Sub TextBox1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    TextBox1 = Format(TextBox1, "000")
End Sub
  • Teste den Code ausgiebig, um sicherzustellen, dass alle Eingabemöglichkeiten abgedeckt sind. Überlege, ob du Fehlermeldungen hinzufügen möchtest, um dem Benutzer Feedback zu geben.

FAQ: Häufige Fragen

1. Frage
Wie kann ich sicherstellen, dass der Benutzer nur Zahlen eingibt?
Antwort: Der Code blockiert alle Eingaben, die keine Zahlen sind. Achte darauf, dass du die richtigen ASCII-Werte für Zahlen verwendest.

2. Frage
Kann ich die Eingabe auf eine andere Anzahl von Zeichen ändern?
Antwort: Ja, ändere einfach die Zahl in If Len(TextBox1) >= 3 Then KeyAscii = 0 auf die gewünschte Anzahl von Zeichen.

3. Frage
Wie gehe ich mit falschen Eingaben um?
Antwort: Du kannst Fehlermeldungen implementieren, um dem Benutzer mitzuteilen, dass die Eingabe ungültig ist.

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