I tried doing it with a bit of code using the Keypress event, and converting the keypresses on the fly, sort of mimicking a remap, using this procedure:
Public Sub NumRemap(KeyAscii As Integer)
' On-the-fly keyboard remapping to put the numeric keypad within the main keyboard space
Select Case KeyAscii
Case 117: SendKeys "1"
Case 105: SendKeys "2"
Case 111: SendKeys "3"
Case 106: SendKeys "4"
Case 107: SendKeys "5"
Case 108: SendKeys "6"
Case 109: SendKeys "7"
Case 44: SendKeys "8"
Case 46: SendKeys "9"
Case 97 To 104, 110 To 122: SendKeys Chr(KeyAscii - 32)
End Select
End Sub
The 97-104 and 110-122 converts lower case to upper case.
Works fine for purely numeric controls with an input mask of '###'. Trouble is, in any other controls it goes whacked. It double-enters keys unless the shift key is also pressed. E.g., pressing 'a' puts an 'aA' in the control.
I tried using the KeyDown, but that results in it doing nothing.