Nur Zahlen zulassen

In Textbox nur numerische Werte zulassen

Um in einer Textbox nur numerische Werte zuzulassen, gibt es verschiedene Wege. Wir stellen Ihnen hier drei davon vor, natürlich in VBA 🙂 :

Sub TextBox1_Change()
   If Not IsNumeric(TextBox1) Then
      MsgBox "Nur numerische Eingaben erlaubt!", _
      vbInformation + vbOKOnly, "Hinweis"
      TextBox1 = "" & Left(TextBox1, Len(TextBox1) - 1)
   End If
End Sub

Das ist kurz und einfach. Prinzipiell wird dort nach jedem eingegebenen Zeichen überprüft, ob der gesamte Text in der Textbox nur aus Ziffern und numerischen Zeichen besteht. Gehört ein eingegebenes Zeichen nicht dazu, wird es sofort gelöscht und eine MsgBox weist darauf hin.

Bei mehrfachen und andauernden Fehleingaben kann das natürlich nerven (das soll es eigentlich auch). Darum hier eine Möglichkeit, die Textbox erst nach dem Abschluss der Eingabe zu prüfen:

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
   If Not IsNumeric(TextBox1) Then
      Cancel = True
      MsgBox "Es sind nur numerische Werte erlaubt!", _
      vbInformation, "Hinweis"
   End If
End Sub

Die dritte Möglichkeit basiert darauf, dass die Tastatureingaben direkt abgefangen werden. Der Effekt ist praktisch wie bei der ersten vorgestellten Prozedur, allerdings wird hier nicht erst in die Textbox geschrieben und bei Fehleingaben das falsche Zeichen wieder gelöscht. In der hier vorgestellten Variante werden ausschließlich nur Ziffern zugelassen, also auch kein Komma, Punkt, Minus, Klammern:

Private Sub Textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   Select Case KeyAscii
   Case 48 To 57
   Case Else:
      KeyAscii = 0
      MsgBox "Es sind nur Ziffern erlaubt!", _
      vbInformation, "Hinweis"
   End Select
End Sub

Zwischen den Code-Zeilen 3 und Zeile 4 fehlt nichts! Es soll einfach nichts geschehen, da die Eingaben einer Ziffer OK sind. Möchten Sie noch die Eingabe eines Kommas, Punktes und das Plus- und das Minuszeichen erlauben, dann sollte die dritte Zeile des Codes so aussehen:

Case 48 To 57, 43 To 46

Klammern und vielleicht auch noch Währungsbezeichnungen können auf die gleiche Art und Weise hinzugefügt werden. Allerdings sind in jedem Fall so eigenartige Konstrukte wie beispielsweise 7,4-2 durchaus möglich. Hier bieten sich wiederum die ersten beiden Möglichkeiten an. – Die drei Module können Sie an dieser Stelle in gepackter Form, alle in einer einzigen Textdatei herunterladen. Sie sollten natürlich nur 1 dieser Prozeduren in einer Form einsetzen.

[NachObenLetzte Verweis=”CS: Nur Zahleneingabe”]

 

Dieser Beitrag wurde unter Code-Schnipsel, Rechnen & Zahlen, Tipps und Tricks, Verschiedenes abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.