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
|