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

Forumthread: VBA: Textbox Zahleneingabe wertmäßig beschränken

VBA: Textbox Zahleneingabe wertmäßig beschränken
01.05.2006 09:29:07
Steamy
Hallo!
Ich habe folgendes Problem:
In zwei Textboxen einer Userform soll eine Uhrzeit eingegeben werden - in die erste die Stunden, in die zweite die Minuten.
Jetzt habe ich über textbox_keypress die Eingabe bereits derart beschränkt, dass nur Ziffern eingegeben werden können und weitere Zifferneingaben ab textbox.textlengh = 2 verworfen werden.
Allerdings sollte man nur sinnige Werte eingeben können, also z.B. in der Minuten-Textbox nur Werte von 0 - 59.
Wie kamm man das realisieren? Es soll nämlich sofort während der Eingabe eine Berechnung stattfinden...
Gruß,
Steamy
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: VBA: Textbox Zahleneingabe wertmäßig beschränken
01.05.2006 09:47:29
Jürgen
Hallo Steamy,
guck mal, ist das OK?

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57
Case Else
MsgBox "Es sind nur Eingaben von 0 - 9 möglich"
TextBox1.Value = ""
TextBox1.SetFocus
End Select
If Len(TextBox1.Value) >= 2 Then
MsgBox "Es ist nur eine zweitstellige Eingabe erlaubt"
TextBox1.Value = ""
TextBox1.SetFocus
End If
End Sub

Gruß Jürgen
Anzeige
AW: VBA: Textbox Zahleneingabe wertmäßig beschränk
01.05.2006 10:21:50
steamy
Hallo Jürgen,
vielen Dank - aber das habe ich soweit dank Google schon selber realisieren können.
Mir geht es vielmehr noch darum, während der Eingabe z.B. der Minuten 27 zuzulassen, nicht aber 72.... und 72 ist halt auch 2-stellig; generell sollte man bei den Minuten nur Werte von 0-59 eingeben können.
Klar könnte man in KeyPress noch überprüfen ob TextBox1.Value = 7 und dann keine weitere Ziffer zulassen - aber die Ziffer könnte ja auch _vor_ der 7 eingegeben werden - und da wären dann Werte von 0 - 5 zulässig....
Gruß,
Steamy
Anzeige
AW: VBA: Textbox Zahleneingabe wertmäßig beschränk
01.05.2006 10:36:52
Oberschlumpf
Hi
Und wenn du einfach die Größe des Wertes überprüfst?

If wert > 59 Then MsgBox "Nur Werte von 0 - 59 zulässig"

Konnte ich helfen?
Ciao
Thorsten
AW: VBA: Textbox Zahleneingabe wertmäßig beschränk
01.05.2006 11:01:00
Jürgen
Hallo Steamy,
über das Change Ereignis. Bei mir klappt das soweit. Versuche doch mal, ob du damit leben kannst.

Private Sub TextBox2_Change()
If Len(TextBox2.Value) >= 3 Or TextBox2.Value > 59 Then
TextBox2.Value = ""
TextBox2.SetFocus
Exit Sub
Else
End If
End Sub

Gruß Jürgen
Anzeige
AW: VBA: Textbox Zahleneingabe wertmäßig beschränk
01.05.2006 11:19:27
Erich
Hallo Steamy,
so kannst du's auch kombinieren:
Private Sub TextBox2_Change()
With TextBox2
If Val(.Value) > 59 Then
MsgBox "Es sind max. 59 Minuten erlaubt."
.Value = ""
.SetFocus
End If
End With
End Sub
Private Sub TextBox2_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
With TextBox2
Select Case KeyAscii
Case 48 To 57
Case Else
MsgBox "Es sind nur Eingaben von 0 - 9 möglich."
KeyAscii = 0
.Value = ""
.SetFocus
Exit Sub
End Select
If Len(.Value) >= 2 Then
MsgBox "Es ist nur eine zweistellige Eingabe erlaubt."
KeyAscii = 0
.Value = ""
.SetFocus
End If
End With
End Sub
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Textbox-Wertbeschränkung in VBA für Excel


Schritt-für-Schritt-Anleitung

Um die Eingabe in einer Excel-Textbox zu beschränken, kannst du die folgenden Schritte befolgen:

  1. Öffne die Userform in deinem VBA-Projekt, in der sich die Textboxen befinden.

  2. Füge die folgende VBA-Prozedur in das Codefenster der Userform ein, um die Eingabe sowohl in der Stunden- als auch in der Minuten-Textbox zu beschränken:

    Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
       Select Case KeyAscii
           Case 48 To 57 'Ziffern 0-9
           Case Else
               MsgBox "Es sind nur Eingaben von 0 - 9 möglich"
               KeyAscii = 0
       End Select
    End Sub
    
    Private Sub TextBox2_Change()
       If Len(TextBox2.Value) >= 3 Or Val(TextBox2.Value) > 59 Then
           MsgBox "Es sind max. 59 Minuten erlaubt."
           TextBox2.Value = ""
           TextBox2.SetFocus
       End If
    End Sub
  3. Testen der Userform: Führe die Userform aus und teste die Eingabe in den Textboxen.


Häufige Fehler und Lösungen

  • Problem: Die Textbox akzeptiert auch Buchstaben.

    • Lösung: Stelle sicher, dass du die KeyPress-Ereignisprozedur korrekt implementiert hast, um nur Ziffern zuzulassen.
  • Problem: Die Minuten-Textbox akzeptiert Werte über 59.

    • Lösung: Verwende die Change-Ereignisprozedur, um die Werte während der Eingabe zu überprüfen und die Eingabe zu beschränken.

Alternative Methoden

Eine alternative Methode, die Eingabe zu beschränken, besteht darin, die BeforeUpdate-Ereignisprozedur zu verwenden, um sicherzustellen, dass die Werte beim Verlassen der Textbox überprüft werden.

Private Sub TextBox2_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    If Val(TextBox2.Value) > 59 Then
        MsgBox "Es sind max. 59 Minuten erlaubt."
        Cancel = True
        TextBox2.SetFocus
    End If
End Sub

Praktische Beispiele

Hier ist ein Beispiel, wie du die beiden Textboxen für Stunden und Minuten in einer Userform kombinieren kannst:

Private Sub TextBox1_Change()
    If Val(TextBox1.Value) > 23 Then
        MsgBox "Es sind max. 23 Stunden erlaubt."
        TextBox1.Value = ""
        TextBox1.SetFocus
    End If
End Sub

Durch die Kombination dieser Prozeduren kannst du sicherstellen, dass die Werte in den vba excel textbox-Feldern sowohl nach Anzahl der Ziffern als auch nach sinnvollen Zeitwerten beschränkt werden.


Tipps für Profis

  • Nutze die Input Mask-Funktion, wenn du eine visuelle Eingabehilfe für die Nutzer schaffen möchtest.
  • Verwende Data Validation, um die Eingaben weiter zu kontrollieren, falls du die Werte in einer Tabelle verarbeiten möchtest.
  • Kommentiere deinen Code, um anderen Entwicklern (oder dir selbst) in Zukunft das Verständnis zu erleichtern.

FAQ: Häufige Fragen

1. Wie kann ich die Eingabe in einer Excel-Textbox weiter beschränken? Du kannst die KeyPress- und Change-Ereignisprozeduren kombinieren, um die Eingabe sowohl nach Ziffern als auch nach sinnvollen Werten zu überprüfen.

2. Funktioniert dieser Code in allen Excel-Versionen? Ja, dieser VBA-Code sollte in den meisten gängigen Excel-Versionen funktionieren, die VBA unterstützen.

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