Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ
ゲームアプリを作成する場合、よく矢印キー入力を調べます。 矢印キーでUFOが上下左右に動くなどです。 これを実行するのに、Windows APIのGetAsyncKeyStateをExcel VBAでよく使用します。 GetAsyncKeyStateの構文 Private Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long vKey : 押されているかどうか調べるキーを指定します。 戻り値 : 引数で指定したキーが押されれば0以外が、押されていない場合は0が返ります。
早速作ってみます。 例えば、GetAsyncKeyState(27)の場合ESCキーが押されれば0以外が返ります。 関連する「押されたキーを判定する」も参照してください。 |
Windows APIのGetAsyncKeyStateを宣言します。
MyKeyinプロシージャ:引数は行番号を格納するlrowと、列番号を格納するlcolです。
コマンドボタンクリックイベント
行位置と列位置を10にし、MyKeyinプロシージャを呼び出します。
矢印キーでセルのカーソル位置が移動します。
高速で移動しますので注意してください。
Option Explicit
Private Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
Private Sub MyKeyin(lrow As Long, lcol As Long)
Do Until GetAsyncKeyState(27) <> 0
If GetAsyncKeyState(vbKeyUp) <> 0 Then
lrow = lrow - 1
If lrow < 1 Then lrow = 1
ElseIf GetAsyncKeyState(vbKeyDown) <> 0 Then
lrow = lrow + 1
ElseIf GetAsyncKeyState(vbKeyLeft) <> 0 Then
lcol = lcol - 1
If lcol < 1 Then lcol = 1
ElseIf GetAsyncKeyState(vbKeyRight) <> 0 Then
lcol = lcol + 1
End If
Cells(lrow, lcol).Select
DoEvents
Loop
End Sub
Private Sub CommandButton1_Click()
MyKeyin 10, 10
End Sub
■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します