次の方法で共有


Form.KeyDown イベント (Access)

KeyDown イベントは、フォームまたはコントロールにフォーカスがある状態でキーを押したときに発生します。 また、マクロで "SendKeys/キー送信" アクションを使うか、Visual Basic コードで SendKeys ステートメントを使って、フォームまたはコントロールにキーストロークを送信した場合にも発生します。

構文

KeyDown (KeyCodeShift)

expressionForm オブジェクトを表す変数です。

パラメーター

名前 必須 / オプション データ型 説明
KeyCode 必須 Integer vbKeyF1 (F1 キー) や vbKeyHome (ホーム キー) などのキー コード。 キー コードを指定するには、オブジェクト ブラウザーで示された組み込み定数を使用します。 KeyCode を 0 に設定すると、オブジェクトがキーストロークを受け取らないようにすることができます。
Shift 必須 Integer イベント発生時の Shift キー、Ctrl キー、Alt キーの状態。 Shift 引数をテストする必要がある場合は、次のいずれかの組み込み定数をビット マスクとして使用できます。
  • acShiftMask Shift キーのビット マスク。

  • acCtrlMask Ctrl キーのビット マスク。

  • acAltMask Alt キーのビット マスク。

注釈

KeyDown イベントはフォームとコントロールにのみ適用され、レポートのコントロールには適用されません。

このイベントが発生したときに、マクロまたはイベント プロシージャを実行するには、" OnKeyDown /キークリック時" プロパティをマクロ名または "[Event Procedure]"/"[イベント プロシージャ]" に設定します。

フォーカスのあるオブジェクトが、キーストロークを受け取ります。 フォームがフォーカスを受け取ることができるのは、そのフォームにコントロールが配置されていないか、または、すべての可視コントロールが使用不可に設定されている場合だけです。

フォームの " KeyPreview /キーボード イベント取得" プロパティを [Yes/はい] に設定しておくと、コントロールに発生するイベントも含めて、フォームはすべてのキーストロークを受け取ります。 この設定では、すべてのキーボード イベントはまずフォームに対して発生し、次にフォーカスのあるコントロールに対して発生します。 どのコントロールにフォーカスがあっても、フォームで押された特定のキーに応答することができます。 たとえば、Ctrl + X キーの組み合わせでフォームに対して常に同じアクションを実行できます。

キーを長押しすると、 KeyDown イベントと KeyPress イベントが、キーを離すまで繰り返し (KeyDownKeyPressKeyDownKeyPress など)、 KeyUp イベントが発生します。

KeyDown イベントはほとんどのキーが押されたときに発生しますが、このイベントは主に、次のキーを検出するために使います。

  • ファンクション キーなどの拡張キー。

  • ナビゲーション キー (ホーム、End、PgUp、PgDn、上方向キー、下方向キー、右方向キー、左方向キー、Tab キーなど)。

  • キーと標準のキーボード修飾子の組み合わせ (Shift キー、Ctrl キー、または Alt キー)。

  • テンキーとキーボードの数字キー。

KeyDown イベントは、次のキーが押されたときには発生しません。

  • フォームにコマンド ボタンがあり、 Default プロパティが [はい] に設定されている場合は、Enter キーを押します。

  • フォームに Cancel プロパティが [はい] に設定されているコマンド ボタンがある場合は、Esc キーを押します。

ANSI キーを押すか送信すると、 KeyDown イベントが発生します。 KeyUp イベントは、キーを押したり送信したりすることによってコントロールに対するイベントが発生した後に発生します。 キーストロークによってフォーカスが移動した場合は、移動前のコントロールに対して KeyDown イベントが発生し、移動後のコントロールに対して KeyPress イベントと KeyUp イベントが発生します。

押したキーに対応する ANSI 文字セットの文字を確認するには、 KeyPress イベントを使います。

キーを押すか送信するかした結果として作業ウィンドウ固定 (モーダル) ダイアログ ボックスが表示された場合は、 KeyDown イベントと KeyPress イベントが発生し、 KeyUp イベントは発生しません。

次の例では、Shift キー、Ctrl キー、Alt キーのどちらを押したかを決定します。

この例を試すには、 KeyHandler という名前のテキスト ボックスを含むフォームに次のイベント プロシージャを追加します。

Private Sub KeyHandler_KeyDown(KeyCode As Integer, _ 
     Shift As Integer) 
    Dim intShiftDown As Integer, intAltDown As Integer 
    Dim intCtrlDown As Integer 
 
    ' Use bit masks to determine which key was pressed. 
    intShiftDown = (Shift And acShiftMask) > 0 
    intAltDown = (Shift And acAltMask) > 0 
    intCtrlDown = (Shift And acCtrlMask) > 0 
    ' Display message telling user which key was pressed. 
    If intShiftDown Then MsgBox "You pressed the Shift key." 
    If intAltDown Then MsgBox "You pressed the Alt key." 
    If intCtrlDown Then MsgBox "You pressed the Ctrl key." 
End Sub

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。