こんなこともできるということで、各DLLにどんな機能が入っているか知ってないと使えませんが。。。
64bitと32bit環境で宣言の仕方が微妙に違うので注意。
参考
Option Explicit
'64bit PC
Private Declare PtrSafe Sub Sleep Lib "kernel32.dll" (ByVal ms As LongPtr)
Private Declare PtrSafe Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As LongPtr) As Long
'32bit PC
'Private Declare Sub Sleep Lib "kernel32.dll" (ByVal ms As Long)
'Private Declare Function GetAsyncKeyState Lib "user32.dll" (ByVal vKey As Long) As Long
Sub sleepSample() ' Sleepサンプル
Sleep 2000
MsgBox "2秒間経過"
End Sub
Sub keyInputSample() ' キー入力サンプル
' Qキー押下で停止
Do
If GetAsyncKeyState(vbKeyLeft) <> 0 Then MsgBox "←キーが押されました"
If GetAsyncKeyState(vbKeyUp) <> 0 Then MsgBox "↑キーが押されました"
If GetAsyncKeyState(vbKeyRight) <> 0 Then MsgBox "→キーが押されました"
If GetAsyncKeyState(vbKeyDown) <> 0 Then MsgBox "↓キーが押されました"
If GetAsyncKeyState(vbKeyQ) <> 0 Then Exit Do ' Qキー
Call Sleep(1)
DoEvents
Loop
MsgBox "終了"
End Sub