コマンドボタンの右クリックを判別する


デザイン中のUserFormで、コマンドボタンをダブルクリックして表示されるプロシージャでは、左ボタン(標準ボタン)のクリックしか判別できません。

Private Sub CommandButton1_Click()
    ''このプロシージャは左クリックしか認識できない
End Sub

マウスの、左ボタンと右ボタンで、別の処理を行いたい場合は、Clickイベントではなく、MouseDownイベントまたはMouseUpイベントを使います。ここでは、MouseUpイベントでやってみましょう。MouseUpイベントは、マウスのボタンを押して、あがったときに発生します。まぁ、実際には、どっちでも似たようなものです。

Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, _
                                                            ByVal X As Single, ByVal Y As Single)
End Sub

MouseUpイベントの引数Buttonには、クリックされたボタンを表す数値が格納されます。

定数 内容
fmButtonLeft 1 左ボタンが押されました
fmButtonRight 2 右ボタンが押されました
fmButtonMiddle 4 中央ボタンが押されました

なので、これを区別すれば、クリックされたボタンを判別できます。

Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, _
                                                            ByVal X As Single, ByVal Y As Single)
    Select Case Button
    Case 1
        MsgBox "左ボタンがクリックされました"
    Case 2
        MsgBox "右ボタンがクリックされました"
    End Select
End Sub

定数が使えないときは、数値を指定しましょう。

なお、ClickイベントとMousuUpイベントの両方にコードを記述した場合は、MouseUpイベントのプロシージャだけが実行されます。

Private Sub CommandButton1_Click()
    MsgBox "クリックされました"
End Sub
Private Sub CommandButton1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, _
                                                            ByVal X As Single, ByVal Y As Single)
    Select Case Button
    Case 1
        MsgBox "左ボタンがクリックされました"
    Case 2
        MsgBox "右ボタンがクリックされました"
    End Select
End Sub