теперь понятно почему на этот код программа реагирует странно - то включает, то не включает. Всё дело в состоянии. А как тогда можно сделать нормально работающий код, который бы гарантировано включал NumLock при загрузке формы?
Код
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Public Function KeyboardNumLock()
Dim WsNumlock As Variant
If GetKeyState(vbKeyNumlock) = 0 Then
Set WsNumlock = CreateObject("WScript.Shell")
WsNumlock.SendKeys "{NUMLOCK}"
End If
End Function