VBだけでやるなら フラグを使ってMouseDownイベントなどでCtrlが押されているかどうかを判断しておくといった手法だと思います
WinAPIを使っていいのであれば GetKeyStatus辺りでチャックでしょう
フラグの場合
Dim bCtrl as Boolean
Sub Form_DblClick()
if bClrl then
MsgBox "Ctrlも一緒でした"
end if
End Sub
Sub Form_MouseDown( b as integer, s as integer, x as Single, y as single)
if s and vbCtrlMask then
bCtrl = True
else
bCtrl = False
end if
End Sub
WinAPIならば
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Private Const VK_CONTROL = &H11
Private Sub Form_DblClick()
If GetKeyState(VK_CONTROL) Then
MsgBox "Ctrlも一緒だよ"
End If
End Sub
といった具合でしょう
質問者
お礼
ありがとうございます。
投稿した後に自己解決してしまいました。
APIを使用しないのでredfox63さんの前者とほぼ同じです。
Public dblclk As Integer
Private Sub Form_DblClick()
dblclk = 1
End Sub
Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single)
If dblclk = 1 Then
If Shift = vbCtrlMask Then
'Ctrlを押しながらダブルクリックした場合の処理
Else
'Ctrlを押さずにダブルクリックした場合の処理
End If
End If
End Sub
お礼
ありがとうございます。 投稿した後に自己解決してしまいました。 APIを使用しないのでredfox63さんの前者とほぼ同じです。 Public dblclk As Integer Private Sub Form_DblClick() dblclk = 1 End Sub Private Sub Form_MouseUp(Button As Integer, Shift As Integer, x As Single, y As Single) If dblclk = 1 Then If Shift = vbCtrlMask Then 'Ctrlを押しながらダブルクリックした場合の処理 Else 'Ctrlを押さずにダブルクリックした場合の処理 End If End If End Sub