I understand the need for speed, and yes you can do this. I have a form with a date field, and I wanted to use the + and - keys to increment or decrement the date. Your requirement seems similar.
I used the On Key Down and On Key Up events to detect when the + or - keys were pressed - you should be able to do the same for the number pad keys, although the number pad keys may require using the On Key Press event due to different encoding. Play around with these events, and just debug.print the incoming values to see which one you want to trap.
Here's what I did:
Private Sub txtDated_KeyDown(KeyCode As Integer, Shift As Integer)
On Error GoTo Err_txtDated_KeyDown
If KeyCode = 189 Or KeyCode = 187 Then
m_lastDated = Me.txtDated.Value
End If
Exit_txtDated_KeyDown:
Exit Sub
Err_txtDated_KeyDown:
Global_Error m_moduleName, "txtDated_KeyDown", Err.Description, Err.Number
Resume Exit_txtDated_KeyDown
End Sub
Private Sub txtDated_KeyUp(KeyCode As Integer, Shift As Integer)
On Error GoTo Err_txtDated_KeyUp
Dim checkDate As Date
If KeyCode = 189 Then
checkDate = CDate(m_lastDated)
checkDate = checkDate - 1
Me.txtDated.Value = Format(checkDate, "mm/dd/yyyy")
ElseIf KeyCode = 187 Then
checkDate = CDate(m_lastDated)
checkDate = checkDate + 1
Me.txtDated.Value = Format(checkDate, "mm/dd/yyyy")
End If
Exit_txtDated_KeyUp:
Exit Sub
Err_txtDated_KeyUp:
Global_Error m_moduleName, "txtDated_KeyUp", Err.Description, Err.Number
Resume Exit_txtDated_KeyUp
End Sub