Form.KeyPress イベント (Access)

KeyPress イベントは、フォームやコントロールにフォーカスがある状態で、ANSI 文字コードに対応するキーまたはキーの組み合わせを押して離したときに発生します。 このイベントは、マクロで "SendKeys/キー送信" アクションを使うか、Visual Basic で SendKeys ステートメントを使って、フォームやコントロールにキー操作を送信した場合にも発生します。

構文

KeyPress (KeyAscii)

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

パラメーター

名前 必須 / オプション データ型 説明
KeyAscii 必須 整数型 (Integer) 数値で表される ANSI キー コードを返します。 引数 KeyAscii は参照によって渡され、これを変更すると、異なった文字がオブジェクトに送られます。 引数 KeyAscii に 0 を設定すると、キーストロークがキャンセルされ、オブジェクトはキーが押されたことを認識しません。

注釈

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

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

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

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

KeyPress イベントには、印刷可能なキーボード文字、Ctrl キーと標準アルファベットまたは特殊文字の文字、Enter キーまたは Backspace キーを組み合わせることができます。 KeyDown イベント プロシージャと KeyUp イベント プロシージャを使用して、KeyPress イベントで認識されないキーストローク (ファンクション キー、ナビゲーション キー、キーボード修飾子 (Alt キー、Shift キー、Ctrl キー) との組み合わせなど) を処理します。 KeyPress イベントでは、 KeyDown イベントおよび KeyUp イベントとは異なり、キーストロークの状態は示されず、ユーザーが押したキーまたはキーの組み合わせに対応する ANSI 文字が示されます。

KeyPress イベントでは、各アルファベット文字の大文字と小文字は、別のキーコード、つまり 2 つの別の文字として扱われます。

注:

Backspace キーは ANSI 文字セットの一部ですが、Delete キーは含まれません。 Backspace キーを使用してコントロール内の文字を削除すると、 KeyPress イベントが発生します。Delete キーを使用する場合は使用しません。

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

たとえば、新しいレコードに移動してそのレコードの最初のコントロールに文字を入力すると、次のイベントが発生します。

  • Current (新しいレコードに対して)
  • Enter (新しいレコードの最初のコントロールに対して)
  • GotFocus (コントロールに対して)
  • KeyDown (コントロールに対して)
  • KeyPress (コントロールに対して)
  • BeforeInsert フォームの新しいレコードに対して
  • Change (テキスト ボックスまたはコンボ ボックスの場合、コントロールに対して)
  • KeyUp (コントロールに対して)

次の例では、テキスト ボックスに文字が入力されるときに、それらの文字を 1 つずつ大文字に変換します。

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

Private Sub ShipRegion_KeyPress(KeyAscii As Integer) 
 Dim strCharacter As String 
 
 ' Convert ANSI value to character string. 
 strCharacter = Chr(KeyAscii) 
 ' Convert character to upper case, then to ANSI value. 
 KeyAscii = Asc(UCase(strCharacter)) 
End Sub

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

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