KeyDown イベント

Microsoft Access Visual Basic のリファレンス

KeyDown イベント

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

Private Sub object_KeyDown(KeyCode As Integer, Shift As Integer)

Object フォームまたはフォーム上のコントロールの名前。

KeyCode vbKeyF1 (F1 キー) または vbKeyHome (Home キー) などのキー コード。キー コードを指定するには、オブジェクト ブラウザで示された組み込み定数を使用します。KeyCode に 0 を設定することにより、オブジェクトがキーストロークを受け取らないようにすることができます。

Shift イベント発生時の Shift キー、Ctrl キー、および Alt キーの状態。引数 Shift のテストを行う必要がある場合は、ビット マスクとして次の組み込み定数のいずれかを使用できます。

定数の説明

acShiftMask Shift キーのビット マスク

acCtrlMask Ctrl キーのビット マスク

acAltMask Alt キーのビット マスク

解説

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

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

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

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

キーを押し続けた場合は、キーを離すまで KeyDown イベントと KeyPress イベントが交互に繰り返し発生 (KeyDown、KeyPress、KeyDown、KeyPress ... ) し、キーを離すと KeyUp イベントが発生します。

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

  • ファンクション キーなどの拡張キー
  • HomeEndPageUpPageDownTab などの移動キー
  • 標準の補助キー (ShiftCtrlAlt キー) と他のキーの組み合わせ
  • テンキーとキーボードの数字キーの区別

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

  • "Default/既定のボタン" プロパティに [Yes/はい] が設定されているコマンド ボタンがフォームにある場合の Enter キー
  • "Cancel/キャンセルボタン" プロパティに [Yes/はい] が設定されているコマンド ボタンがフォームにある場合の Esc キー

ヒント

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

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

詳細については、ここをクリックしてください。

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

マクロ

KeyDown イベント マクロまたは KeyUp イベント マクロを使用すると、フォームまたはコントロールにフォーカスがある状態でユーザーがキーを押したり離したりしたときに常に応答できます。ただし、マクロではキー コードを返したり、押されたキーを判断したりすることができないため、通常、これらのイベントではイベント プロシージャを使用します。

KeyDown イベント マクロまたは KeyUp イベント マクロで "CancelEvent/イベントのキャンセル" アクションを使用することはできません。

使用例

次の使用例では、Shift キー、Ctrl キー、または Alt キーが押されたかどうかを調べます。

次の使用例の実行結果を確認するには、[キーハンドラ] という名前のテキスト ボックスが配置されたフォームに対し、次のイベント プロシージャを追加します。

Private Sub キーハンドラ_KeyDown(KeyCode As Integer, _
     Shift As Integer)

    Dim intShiftDown As Integer, intAltDown As Integer
    Dim intCtrlDown As Integer

    ' ビット マスクを使って、押されたキーを調べます。
    intShiftDown = (Shift And acShiftMask) > 0
    intAltDown = (Shift And acAltMask) > 0
    intCtrlDown = (Shift And acCtrlMask) > 0
    ' 押されたキーを示すメッセージを表示します。
    If intShiftDown Then MsgBox "Shift キーが押されました。"
    If intAltDown Then MsgBox "Alt キーが押されました。"
    If intCtrlDown Then MsgBox "Ctrl キーが押されました。"

End Sub
		
表示: