機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > VBA

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



デザイン中の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









このエントリーをはてなブックマークに追加