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