In einer UserForm habe ich eine Textbox, in welcher ich nur Zahlen zulassen möchte (ähnlich wie mit der Datengültigkeit im Tabellenblatt). Gibt es dazu eine Möglichkeit?
Für Euere Hilfe wäre ich sehr dankbar!
Gruss
Tinu
Private Sub Textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case Else: KeyAscii = 0
End Select
End Sub
Um in einer Excel-UserForm eine Textbox zu erstellen, die nur Zahlen zulässt, kannst Du den folgenden VBA-Code verwenden. Dieser Code stellt sicher, dass nur Ganzzahlen eingegeben werden können.
ALT + F11, um den VBA-Editor zu öffnen.Private Sub Textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57 ' ASCII-Werte für 0-9
Case Else: KeyAscii = 0 ' andere Zeichen nicht zulassen
End Select
End Sub
Auf diese Weise hast Du eine Excel VBA Textbox, die nur Zahlen zulässt.
Fehler: Textbox akzeptiert auch Buchstaben.
Fehler: Textbox akzeptiert keine Eingaben.
Eine alternative Methode, um nur Zahlen in einer TextBox zuzulassen, ist die Verwendung von Datengültigkeit im Tabellenblatt. Du kannst die Eingabe auf Zahlen beschränken, indem Du Folgendes tust:
Diese Methode ist nützlich, wenn Du in einer Zelle auf dem Arbeitsblatt arbeiten möchtest, anstatt eine UserForm zu verwenden.
Stellen wir uns vor, Du möchtest eine Excel VBA Textbox erstellen, die nur ganze Zahlen zwischen 1 und 100 zulässt. Der Code würde folgendermaßen aussehen:
Private Sub Textbox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If (KeyAscii < 48 Or KeyAscii > 57) Then
KeyAscii = 0 ' nur Zahlen zulassen
End If
End Sub
Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Val(Textbox1.Text) < 1 Or Val(Textbox1.Text) > 100 Then
MsgBox "Bitte geben Sie eine Zahl zwischen 1 und 100 ein."
Cancel = True ' zurück zur TextBox
End If
End Sub
Dieses Beispiel zeigt, wie Du nicht nur Zahlen, sondern auch deren Werte einschränken kannst.
Private Sub Textbox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If Len(Textbox1.Text) > 7 Then
MsgBox "Bitte nur siebenstellige Zahlen eingeben."
Textbox1.Text = Left(Textbox1.Text, 7) ' auf siebenstellen beschränken
End If
End Sub
1. Frage
Kann ich in der Textbox auch Dezimalzahlen oder nur Zahlen mit Komma zulassen?
Antwort: Ja, dafür musst Du den Code anpassen und ASCII-Werte für das Komma (z.B. 44 für „,“) hinzufügen.
2. Frage
Wie kann ich den Code in einer bestehenden UserForm hinzufügen?
Antwort: Öffne die UserForm im VBA-Editor, wähle die TextBox aus und füge den Code wie oben beschrieben ein.
3. Frage
Gibt es eine Möglichkeit, Eingaben in einem bestimmten Format zu erzwingen?
Antwort: Ja, Du kannst das Zahlenformat in der TextBox mithilfe von VBA anpassen und auch Eingaben validieren.