質問番号:11157355186

http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11157355186

エクセルVBAについての質問です。キーボードの矢印によってセルの値を変える方法を教えてください。
例として、矢印↑を押すとセルA11の値に+1されて、矢印↓を押すとセルA11−1される。
また、矢印→を押すとセルK1の値に+1され、矢印←を押すとセルK1の値にー1される方法を教えてください。

回答

標準モジュール
Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long

Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
シート1
Option Explicit

Sub main()

    Do While (1)
    
        DoEvents
    
        ' ↑キーが押されたらA11セルの値をカウントアップ
        If GetAsyncKeyState(vbKeyUp) <> 0 Then
            Range("A11").Value = Range("A11").Value + 1
            Range("A11").Select
            Sleep (100)
        End If
        
        ' ↓キーが押されたらA11セルの値をカウントダウン
        If GetAsyncKeyState(vbKeyDown) <> 0 Then
            Range("A11").Value = Range("A11").Value - 1
            Range("A11").Select
            Sleep (100)
        End If
    
        ' →キーが押されたらK1セルの値をカウントアップ
        If GetAsyncKeyState(vbKeyRight) <> 0 Then
            Range("K1").Value = Range("K1").Value + 1
            Range("K1").Select
            Sleep (100)
        End If
        
        ' ←キーが押されたらK1セルの値をカウントダウン
        If GetAsyncKeyState(vbKeyLeft) <> 0 Then
            Range("K1").Value = Range("K1").Value - 1
            Range("K1").Select
            Sleep (100)
        End If
    
        ' エスケープキーが押されたら処理終了
        If GetAsyncKeyState(vbKeyEscape) <> 0 Then
            Exit Do
        End If
    Loop

End Sub