TextBox and KeyCode

D

Darrin Henshaw

I've got a userform with multiple textboxes, each corresponding to
different types of data. I'm trying to limit the possible errors that
can occur. One of my textboxes, corresponds to a zip code. The code I
have to restrict possible entries to number is as so:

Private Sub ZipCode_KeyDown(ByVal KeyCode As _ MSForms.ReturnInteger,
ByVal Shift As Integer)

If KeyCode < 48 Or KeyCode > 57 Then
KeyCode = 0
Beep
End If
End Sub

However, the two problems I have is that. A) The user cannot use the
keypad. What are the keycodes to enable the use of the keypad. B) The
user cannot use the backspace key, to correct an entry. How can I limit
the entries to numbers, but allow them to use the keypad? And allow them
to correct themselves, with the backspace key? Thanks.
 
B

Bob Phillips

Private Sub ZipCode_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
With Me.ZipCode
Select Case KeyCode
Case KeyCode < 48, Is > 57
KeyCode = 0
Beep
Case 8 'backspace
If Len(.Text) > 0 Then
.Text = Left(.Text, Len(.Text) - 1)
End If
KeyCode = 0
End Select
End With
End Sub



--

HTH

RP
(remove nothere from the email address if mailing direct)
 
D

Darrin Henshaw

Thanks Bob. That takes care of the need to backspace, but any ideas on
how to allow them to use the numeric keypad?
 
B

Bob Phillips

Sorry about that

Private Sub ZipCode_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal
Shift As Integer)
With Me.ZipCode
Select Case True
Case (KeyCode >= 96 And KeyCode < 105) 'numeric keypad
'exit quietly
Case (KeyCode >= 48 And KeyCode < 57) 'normal keypad
'exit quietly
Case KeyCode = 8 'backspace
If Len(.Text) > 0 Then
.Text = Left(.Text, Len(.Text) - 1)
End If
KeyCode = 0
Case Else
KeyCode = 0
Beep
End Select
End With
End Sub
 
G

Guest

As long as the Num Lock is on the keypad should return the same ascii values
as the keyboard number keys.
 
D

Darrin Henshaw

Thanks it's working now. Is there a place I can see what the values are
for each key? So I can print them, or save them for future reference.
Also, by just modifying the "Me.ZipCode" can use the same code for
another textbox, as is? Thanks.
 
G

Guest

There is a list of Ascii characters in VB help. Or you can set a debug
breakpoint and examine the value, or use Debug.Print KeyCode, or whatever.
 
G

Guest

Yes, we often modify existing code or create module that can be used in many
other places.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top