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

Forumthread: TextBox soll nur 2 Zahlen als Eingabe zulassen

TextBox soll nur 2 Zahlen als Eingabe zulassen
20.05.2007 22:31:30
Lenhard
Moin!
Ich habe mir ein Skript zurecht "gebastelt", welches überprüft ob in der TextBoxBilderAnzahl ein Zahlenwert eingegeben wurde und diesen auf 2 Zahlen begrenzt.
Wenn diese Bedingungen nicht erfüllt werden, dann erscheint jeweils eine MsgBox mit einem jeweiligen Hinweis und der Focus wird wieder auf die TextBoxBilderAnzahl gesetzt.
Mein Problem: Es wird nur ein einmaliger Durchlauf geprüft. Wenn ich die MsgBoxen ein zweites mal via OK wegklicke, dann wird der Inhalt nicht mehr geprüft.
...und dann werden auch Eingaben wie "wx" oder "xy" zugelassen. UND DAS WILL ICH NICHT!
Hier mein Skript. Was mache ich falsch?!

Private Sub TextBoxBilderAnzahl_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
With TextBoxBilderAnzahl        'Überprüft die TextBoxBilderAnzahl
If .Text = "" Then Exit Sub
If IsNumeric(.Text) Then
.Text = Format(CDbl(.Text), "#0")  ' "#0"  wenn nur ganze Zahlen
Else
MsgBox "Hier können Sie nur Zahlen eingeben!!", 64, "Röntgenbilder Anzahl"
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
Exit Sub
End If
If TextBoxBilderAnzahl.TextLength > 2 Then     'Begrenzt die Anzahl der Zeichen in der  _
TextBoxBilderAnzahl auf 2 Zeichen
MsgBox "Die Eingabe der Bilderanzahl ist auf 2 Zeichen begrenzt!", 64, " _
Zeichenbegrenzung"
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
Exit Sub
End If
End With
End Sub


Wäre das eine sogenannte "Schleife" einzurichten?
Viele Grüße aus dem hohen Norden!
Lenhard

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: TextBox soll nur 2 Zahlen als Eingabe zulassen
20.05.2007 22:47:59
K.Rola
Hallo,
meinst du das so?

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Len(TextBox1) 


Gruß K.Rola

Danke, kann ich gut gebrauchen. oT
20.05.2007 23:08:56
Gerd
a

AW: TextBox soll nur 2 Zahlen als Eingabe zulassen
20.05.2007 23:16:34
Lenhard
Erst mal Danke für diese Antwort! ...aber sie löst nur noch mehr ? in mir aus.
Was ist "Case KeyAscii" und "Case 48 To 57" ...? Wieso 48-57?
Ich bin leider kein VBA-Profi. Ich mache meinen ersten größeren Schritte.
-----------------------------
Vielleicht ist es auch wichtig: Die TextBoxBilderAnzahl liegt nicht auf einem Tabellenblatt, sondern ist in einem Userform.
Ich möchte, dass man solange in diese Textbox zurück geschickt wird, bis der Eintrag aus 1ner bis 2 Zahlen besteht (Keine Buchstaben wie xyz oder andere Zeichen wie %$&!). Das aber nur, wenn ein Eintrag erfolgt! Es sollen nur maximal 2 Zahlen (!) zugelassen werden.
Bleibt die TextBoxBilderAnzahl leer, dann bitte auch keine Prüfung.
Gruß
Lenhard

Anzeige
AW: TextBox soll nur 2 Zahlen als Eingabe zulassen
21.05.2007 01:10:00
Daniel
Hallo
wenn du mit einer Textbox in einer Userform arbeitest, hast du sicherlich auch einen OK-Button, mit dem du die Eingabe bestätigst.
in diesem Fall kann man auch die Methode anwenden, daß der OK-Button erst dann aktiviert wird, wenn die Eingabe deinen Vorgaben entspricht.
das macht man mit der Funktion Commandbutton_OK.ENABLED = TRUE/FALSE
das Makro dazu würde dann so aussehen und müsste zum Change-Ereignis der Textbox gehören:

Private Sub TextBox1_Change()
Dim T
T = TextBox1.Value
If T = "" Then GoTo OK_EIN
If Not IsNumeric(T) Then GoTo OK_AUS
T = CDbl(T)
If T  99 Then GoTo OK_AUS
If T  Int(T) Then GoTo OK_AUS
OK_EIN:
CommandButton_OK.Enabled = True
CommandButton_OK.Caption = "OK"
Exit Sub
OK_AUS:
CommandButton_OK.Enabled = False
CommandButton_OK.Caption = "Eingabe nicht korrekt"
End Sub


https://www.herber.de/bbs/user/42593.xls
Gruß, Daniel

Anzeige
AW: TextBox soll nur 2 Zahlen als Eingabe zulassen
21.05.2007 10:43:22
Lenhard
Danke Daniel!
Das ist eine sehr gute Idee, die sozusagen auf einen kleinen Umweg wirkt. Deine Vermutung, das ich einen O.K.-Button habe ist richtig.
Ich würde trotzdem gerne, das die "Leer oder nur 2 Zahlen Kontrolle" auf die Textbox begrenzt bleibt, da ich noch mehr Text- und ComboBoxen in dem UserForm habe.
Diese anderen TBs und CBs sind aber mit einer Pflichteingabe (!) schon "versorgt". Meine angesprochene TextBoxBilderAnzahl dagegen stellt eine Kann-Eingabe dar.
Was mich nur wundert ist, dass meine Prüfung ja 1x funktioniert (Nach klick auf O.K.). Erst nach dem 2.x werden auch Buchstaben zugelassen....
Das muss doch eine Kleinigkeit in meinen Skript sein, wo ich Gedankenfehler mache... Denke ich.
Aber davon mal ab: Deine Idee ist trotzdem Klasse und wandert in mein "Archiv für weitere Projekte" ...oder ich kann sie doch noch irgendwie hier verwenden... Ich schau mal!!
Erst mal Danke Daniel!
Gruß
Lenhard
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

TextBox nur für 2 Zahlen konfigurieren


Schritt-für-Schritt-Anleitung

Um eine TextBox in einem UserForm so zu konfigurieren, dass sie nur zwei Zahlen akzeptiert, kannst du das folgende VBA-Skript verwenden. Dieses Skript überprüft die Eingabe und gibt eine Fehlermeldung aus, wenn die Bedingungen nicht erfüllt sind.

  1. Öffne deinen Excel VBA-Editor (drücke Alt + F11).
  2. Wähle dein UserForm aus.
  3. Füge den folgenden Code in das Codefenster des UserForms ein:
Private Sub TextBoxBilderAnzahl_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    With TextBoxBilderAnzahl
        If .Text = "" Then Exit Sub
        If IsNumeric(.Text) Then
            .Text = Format(CDbl(.Text), "#0")  ' Formatierung für ganze Zahlen
        Else
            MsgBox "Hier können Sie nur Zahlen eingeben!!", 64, "Röntgenbilder Anzahl"
            .SetFocus
            .SelStart = 0
            .SelLength = Len(.Text)
            Cancel = True
            Exit Sub
        End If
        If .TextLength > 2 Then
            MsgBox "Die Eingabe der Bilderanzahl ist auf 2 Zeichen begrenzt!", 64, "Zeichenbegrenzung"
            .SetFocus
            .SelStart = 0
            .SelLength = Len(.Text)
            Cancel = True
            Exit Sub
        End If
    End With
End Sub
  1. Schließe den VBA-Editor und teste die Funktionalität in deinem UserForm.

Häufige Fehler und Lösungen

  • Problem: Nach dem ersten Klick auf OK wird die Eingabe nicht mehr geprüft.

    • Lösung: Stelle sicher, dass du die Cancel-Eigenschaft auf True setzt, wenn die Eingabe ungültig ist. Dies sorgt dafür, dass der Fokus auf die TextBox zurückgesetzt wird.
  • Problem: Buchstaben oder andere Zeichen werden akzeptiert.

    • Lösung: Prüfe die IsNumeric-Funktion und stelle sicher, dass nur numerische Eingaben akzeptiert werden.

Alternative Methoden

Eine alternative Methode zur Validierung der Eingaben ist die Verwendung des KeyPress-Ereignisses. Hierbei kannst du direkt während der Eingabe überprüfen, ob die Zeichen gültig sind.

Private Sub TextBoxBilderAnzahl_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If Not (KeyAscii >= 48 And KeyAscii <= 57) Then ' ASCII-Werte für 0-9
        MsgBox "Nur Ziffern sind erlaubt!", vbExclamation
        KeyAscii = 0 ' Verhindere die Eingabe
    End If
End Sub

Praktische Beispiele

Hier ist ein Beispiel, wie du die TextBox in einem UserForm nutzen kannst:

  1. Erstelle ein UserForm mit einer TextBox namens TextBoxBilderAnzahl.
  2. Füge einen Button hinzu, der die Eingabe verarbeitet.
  3. Verwende den oben genannten Code, um sicherzustellen, dass nur zwei Ziffern eingegeben werden können.

Tipps für Profis

  • Eingabe optimieren: Du kannst die Eingabe mithilfe von CommandButton aktivieren oder deaktivieren, basierend auf der Validität der Eingabe.
  • Feedback geben: Verwende visuelles Feedback, wie z.B. das Ändern der Hintergrundfarbe der TextBox, um den Benutzern zu zeigen, ob ihre Eingabe gültig ist oder nicht.
  • Testen: Teste dein UserForm gründlich, um sicherzustellen, dass alle Eingaben korrekt validiert werden.

FAQ: Häufige Fragen

1. Frage
Wie kann ich sicherstellen, dass leere Eingaben nicht geprüft werden?
Antwort: Im obigen Skript wird die Prüfung übersprungen, wenn die TextBox leer ist (If .Text = "" Then Exit Sub).

2. Frage
Was sind die ASCII-Werte für Zahlen?
Antwort: Die ASCII-Werte für die Ziffern 0 bis 9 sind 48 bis 57. Diese Werte können verwendet werden, um eine Eingabe auf Ziffern zu beschränken.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige