Thread: keypress
View Single Post
  #3   Report Post  
Posted to microsoft.public.excel.programming
Harald Staff Harald Staff is offline
external usenet poster
 
Posts: 1,327
Default keypress

Hi Garry

You should also allow arrows and Delete, they're pretty standard. Try this:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 8 To 10, 13, 27, 44 'Control characters
Case 48 To 57 'numbers
Case Else 'Discard anything else
KeyAscii = 0
End Select
End Sub

Big question is wether you allow pasting with Ctrl V into it. That takes
some effort to do, but it's done like like this:

Private Sub TextBox1_KeyDown(ByVal KeyCode As _
MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 86 And Shift = 2 Then
KeyCode = 0 'cancelled !
'optional validation and pasting of
'clipboard content goes here
End If
End Sub


As for "next after 3 digits":

Private Sub TextBox1_KeyUp(ByVal KeyCode As _
MSForms.ReturnInteger, ByVal Shift As Integer)
If Len(TextBox1.Text) = 3 Then TextBox2.SetFocus
End Sub

--
HTH. Best wishes Harald
Followup to newsgroup only please

"Garry Jones" skrev i melding
...
I am a bit confused about keypress.

I can't quite get this to work, there seems to be a few ways to do this.

What I want to do is

Allow a user to press any number (0123456789) in a text box.

I want to allow them to press backspace as well in that text box.

I want to shut off all other keys. When they have entered a 3 digit
number the focus will move to textbox 2 where I will do the same thing
there.

So, if I am on the right lines...

Private Sub TextBox1_KeyPress(KeyAscii As Integer)
tstinput (keyascii)
End Sub

private sub tstinput
If KeyAscii < 8 'allow backspace
Then
If Not IsNumeric(Chr$(KeyAscii)) Then
KeyAscii = 0
else
end if
else
end if
end sub

But this does not work, I am missing something here.

And when it is working I can add the length bit and move focus to next
textbox, I am content that I can do that at least. But I can not get the
hang of this keypress.

Any help appreciated.

Garry Jones