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