Excel VBA:マウスクリックを検出する|APIのGetAsyncKeyState

右クリックか左クリックされると、セルに表示するVBAを掲載しています。

スポンサーリンク



Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ


前回矢印キー入力を調べましたが、今回はマウスの左右クリックを調べます。

これも実行するのに、Windows APIのGetAsyncKeyStateを使用します。

GetAsyncKeyStateの構文や引数の解説は「キー入力を検出するVBA」を参照してください。

それでは作ってみます。



マウスクリックを検出するVBA

右クリックすると、変数lnumが-1され、A1に表示されます。

左クリックすると、変数lnumが+1され、A1に表示されます。

セルをクリックするとメニューが表示されるなどうまく動作できないので、シート名の余白部分などでテストしてください。

[実行画面]


実行コードの解説

Windows APIのGetAsyncKeyStateを宣言します。

プライベート変数のlnumを宣言します。

MyMouseClickプロシージャ:引数はありません。

  1. ESCキーが押されるまでDoでループします。
  2. GetAsyncKeyState(vbKeyLButton)が0以外を返せば左クリックされたので、変数のlnumを-1します。
  3. GetAsyncKeyState(vbKeyRButton)が0以外を返せば右クリックされたので、変数のlnumを+1します。
  4. 変数lnumをA1セルに代入します。

コマンドボタンクリックイベント

MyMouseClickプロシージャを呼び出します。

[VBE画面]


実行コード

Option Explicit

Private Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
Private lnum As Long

Private Sub MyMouseClick()
    Do Until GetAsyncKeyState(27) <> 0
    
        If GetAsyncKeyState(vbKeyLButton) <> 0 Then
            lnum = lnum - 1
        ElseIf GetAsyncKeyState(vbKeyRButton) <> 0 Then
            lnum = lnum + 1
        End If
        Cells(1, 1) = lnum
        DoEvents
    Loop
End Sub

Private Sub CommandButton1_Click()
    MyMouseClick
End Sub

スポンサーリンク





Homeに戻る > Excel 数値・文字列・検索・印刷のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved