ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   KeyPress Event (https://www.excelbanter.com/excel-programming/277870-keypress-event.html)

Conrado Capistrano

KeyPress Event
 
Hello NG,

Please tell me why the sendkeys statement does not work here in my code.
Also, why is it that when I press backspace it does not trigger the
keypress event even though the help file said that it will trigger the
event.

TIA

Jon-jon


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57 'Nos 0 - 9
Exit Sub
Case Else
Application.EnableEvents = False
SendKeys "{BACKSPACE}", True
Application.EnableEvents = True
MsgBox "Please enter numeric character only."
End Select
End Sub



Chip Pearson

KeyPress Event
 
Conrado,

Try the following instead:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57 'Nos 0 - 9
Exit Sub
Case Else
Application.EnableEvents = False
KeyAscii = 0
Application.EnableEvents = True
MsgBox "Please enter numeric character only."
End Select
End Sub



--
Cordially,
Chip Pearson
Microsoft MVP - Excel
www.cpearson.com

"Conrado Capistrano" wrote in message
...
Hello NG,

Please tell me why the sendkeys statement does not work here in my code.
Also, why is it that when I press backspace it does not trigger the
keypress event even though the help file said that it will trigger the
event.

TIA

Jon-jon


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57 'Nos 0 - 9
Exit Sub
Case Else
Application.EnableEvents = False
SendKeys "{BACKSPACE}", True
Application.EnableEvents = True
MsgBox "Please enter numeric character only."
End Select
End Sub





Tom Ogilvy

KeyPress Event
 
Just to add.
I have never seen a need to enable or disable events when you change the key
ascii value. I believe those two lines can be deleted.

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57 'Nos 0 - 9
Exit Sub
Case Else
KeyAscii = 0
MsgBox "Please enter numeric character only."
End Select
End Sub

worked fine for me without interfering with the users ability to edit the
information in the box. I saw no evidence that this event was fired by a
backspace key.

--
Regards,
Tom Ogilvy

"Chip Pearson" wrote in message
...
Conrado,

Try the following instead:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57 'Nos 0 - 9
Exit Sub
Case Else
Application.EnableEvents = False
KeyAscii = 0
Application.EnableEvents = True
MsgBox "Please enter numeric character only."
End Select
End Sub



--
Cordially,
Chip Pearson
Microsoft MVP - Excel
www.cpearson.com

"Conrado Capistrano" wrote in message
...
Hello NG,

Please tell me why the sendkeys statement does not work here in my code.
Also, why is it that when I press backspace it does not trigger the
keypress event even though the help file said that it will trigger the
event.

TIA

Jon-jon


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57 'Nos 0 - 9
Exit Sub
Case Else
Application.EnableEvents = False
SendKeys "{BACKSPACE}", True
Application.EnableEvents = True
MsgBox "Please enter numeric character only."
End Select
End Sub







Ron de Bruin

KeyPress Event
 
Try to avoid Sendkey Conrado
It is not reliable

Maybe you like this one
It will only allow digits 0 thru 9


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim i As Integer
If KeyAscii < 48 Or KeyAscii 57 Then
' only allow digits 0 thru 9
KeyAscii = 0
End If
End Sub


--
Regards Ron de Bruin
(Win XP Pro SP-1 XL2002 SP-2)
www.rondebruin.nl



"Conrado Capistrano" wrote in message ...
Hello NG,

Please tell me why the sendkeys statement does not work here in my code.
Also, why is it that when I press backspace it does not trigger the
keypress event even though the help file said that it will trigger the
event.

TIA

Jon-jon


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57 'Nos 0 - 9
Exit Sub
Case Else
Application.EnableEvents = False
SendKeys "{BACKSPACE}", True
Application.EnableEvents = True
MsgBox "Please enter numeric character only."
End Select
End Sub





Conrado Capistrano

KeyPress Event
 
Thanks Ron!


"Ron de Bruin" wrote in message
...
Try to avoid Sendkey Conrado
It is not reliable

Maybe you like this one
It will only allow digits 0 thru 9


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Dim i As Integer
If KeyAscii < 48 Or KeyAscii 57 Then
' only allow digits 0 thru 9
KeyAscii = 0
End If
End Sub


--
Regards Ron de Bruin
(Win XP Pro SP-1 XL2002 SP-2)
www.rondebruin.nl



"Conrado Capistrano" wrote in message

...
Hello NG,

Please tell me why the sendkeys statement does not work here in my code.
Also, why is it that when I press backspace it does not trigger the
keypress event even though the help file said that it will trigger the
event.

TIA

Jon-jon


Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
Select Case KeyAscii
Case 48 To 57 'Nos 0 - 9
Exit Sub
Case Else
Application.EnableEvents = False
SendKeys "{BACKSPACE}", True
Application.EnableEvents = True
MsgBox "Please enter numeric character only."
End Select
End Sub








All times are GMT +1. The time now is 01:26 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com