hakeの日記

Windows環境でプログラミングの勉強をしています。

EXCEL VBAメモ - Windowsライブラリの機能を呼ぶ

こんなこともできるということで、各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