Private Type POINTAPI x As Long y As LongEnd TypePrivate Type MSGTYPE hWnd As Long message As Long wParam As Long lParam As Long time As Long pt As POINTAPIEnd TypePrivate Declare Function GetInputState Lib "user32" () As LongPrivate Declare Function PeekMessage Lib "user32" Alias "PeekMessageA" (lpMsg _ As MSGTYPE, ByVal hWnd As Long, ByVal wMsgFilterMin As Long, _ ByVal wMsgFilterMax As Long, ByVal wRemoveMsg As Long) As LongConst WM_KEYFIRST = &H100Const WM_KEYLAST = &H108Const PM_REMOVE = &H1' Returns the code of the last key that has been pressed, zero otherwise' it is useful to query whether the user pressed a key while the program' is processing a tight loop, as in:' Do' ' do your processing here' Loop Until LastKeyCode = vbKeyEscapeFunction LastKeyCode() As Integer Dim mess As MSGTYPE If GetInputState() Then PeekMessage mess, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE LastKeyCode = mess.wParam End IfEnd Function