Das einschränken der Benutzer seine Eingabe aus Ganzzahlen auf einer Userform-Textbox

Ich habe eine textbox auf einer userform, die ich versuche zu beschränken, Benutzereingaben zu erlauben nur integer-Werte. Ich bin in der Lage, dies zu tun, aber das Verhalten ist ein wenig seltsam. Zuerst, hier ist mein code:

Private Sub txtAnswer_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
   If (KeyAscii >= 48) And (KeyAscii <= 57) Then
       Me.txtAnswer.SetFocus
   Else
       KeyAscii = 0
       Me.txtAnswer.SetFocus
   End If
 End Sub

Das problem ist, dass, nachdem der Benutzer eingegeben hat, ein Wert, der Fokus scheint zu gehen Weg von der textbox. Weitere, wenn der Benutzer nicht geben Sie einen integer-Wert, dieser Wert wird aus dem Textfeld gelöscht (d.h. die Eingabe wird "gegessen"). Die SetFocus-Linien sind mein Versuch, die Kontrolle korrekt Verhalten, aber Sie scheinen keine Wirkung haben.

Alles was ich tun möchte, ist sicherzustellen, dass nicht der Benutzer etwas eintragen wie "r" (oder jede andere nicht-integer-Wert) in das Textfeld ein. Ein beliebiger integer-Wert >= 0 ist durchaus akzeptabel (einschließlich mehrerer stellige Werte wie 10 oder 1000000).

Kann jemand sehen, warum mein Ansatz nicht funktioniert? Ich habe versucht ein paar verschiedene Ansätze und gesucht haben, um ganz ein bisschen, aber ich kann nicht etwas finden, die funktioniert.

Danke

InformationsquelleAutor Alex | 2012-06-05

Schreibe einen Kommentar