Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _ ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As _ LongPrivate Const KEYEVENTF_KEYUP = &H2Sub SetCapsLockKey(ByVal newState As Boolean) ' if the current state must be changed If CBool(GetKeyState(vbKeyCapital)) <> newState Then ' programmatically press and release the CapsLock key keybd_event vbKeyCapital, 0, 0, 0 keybd_event vbKeyCapital, 0, KEYEVENTF_KEYUP, 0 End IfEnd Sub