Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Access 2007)
KeycodeとShift
投稿日時: 18/08/05 15:48:30
投稿者: あん

よろしくおねがいします。
 
フォームのKeyDownイベントの引数を教えてください。
 
「Ctrl」と「+」(テンキー側)を組み合わせて、新レコードが開きますが、
「+」がテンキーではない方では「Ctrl」と「Shift」と「;」を押します。
その際、引数のKeycodeとshiftが何になるのかを教えてください。
 
同様に、「Ctrl」と「-」(テンキーではない方)もおねがいします。

回答
投稿日時: 18/08/06 09:49:02
投稿者: sk

引用:
フォームのKeyDownイベント

(フォームモジュール)
-------------------------------------------------------------------
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
 
    Dim strMsg As String
 
    'キーコードに応じて分岐
    Select Case KeyCode
        '+キー(テンキー側)
        Case vbKeyAdd '値は107
            'Ctrl キーの押下時(Shift, Altの同時押しは認めない)
            If Shift = acCtrlMask Then
                strMsg = "Ctrlキーを押しながらテンキーの + をクリックしました。"
            End If
        '-キー(テンキー側)
        Case vbKeySubtract '値は109
            'Ctrl キーの押下時(Shift, Altの同時押しは認めない)
            If Shift = acCtrlMask Then
                strMsg = "Ctrlキーを押しながらテンキーの - をクリックしました。"
            End If
        ';キー
        Case 187
            'Ctrl キーとShiftキーの押下時(Altの同時押しは認めない)
            If Shift = (acShiftMask + acCtrlMask) Then
                strMsg = "CtrlキーとShiftキーを押しながら ; キーをクリックしました。"
            End If
        '-キー(キーボード側)
        Case 189
            'Ctrl キーの押下時(Shift, Altの同時押しは認めない)
            If Shift = acCtrlMask Then
                strMsg = "Ctrlキーを押しながら - キーをクリックしました。"
            End If
        '上記以外
        Case Else
             strMsg = ""
    End Select
         
    If strMsg <> "" Then
        'キーストロークを無効化
        KeyCode = 0
        'イミディエイトウィンドウにメッセージを出力
        Debug.Print strMsg
        'メッセージボックスの表示
        MsgBox strMsg
    End If
     
End Sub
-------------------------------------------------------------------
 
以上のような感じでしょうか。

投稿日時: 18/08/06 14:22:33
投稿者: あん

sk様
 
まさしく、そのような感じです。
 
ショートカットキーでレコード操作ができないようにするために、keydownイベントで、
キー入力の無効化をしようと考えました。
 
さっそくやってみます。
 
ありがとうございました!