Access (的 CommandButton.KeyPress 事件)
KeyPress 事件發生於使用者按下及放開按鍵或組合鍵對應的 ANSI 程式碼表單或控制項擁有焦點時。 如果您使用 SendKeys 巨集指令的巨集或 Visual Basic 中的 SendKeys 陳述式傳送至表單或控制項 ANSI 按鍵,也會發生此事件。
語法
運算式。KeyPress (KeyAscii)
表達 代表 CommandButton 物件的變數。
參數
名稱 | 必要/選用 | 資料類型 | 描述 |
---|---|---|---|
KeyAscii | 必要 | Integer | 會傳回數字 ANSI 按鍵代碼。 KeyAscii 引數使用傳址方式傳遞;變更引數會傳送不同的字元至物件。 將 KeyAscii 引數設為 0 取消按鍵動作,讓物件不會識別按鍵已經按下。 |
註解
若要發生此事件時執行巨集或事件程序,將 OnKeyPress 屬性設定為巨集名稱或 [事件程序]。
取得焦點的物件會接收所有的按鍵動作。 當表單中含有控制項,或是表單中所有的可見控制項尚未全部失效時,該表單便無法取得焦點。
表單也會接收所有的鍵盤事件,即使這些發生控制項,如果您將表單的 KeyPreview 屬性設定為 [是]。 此屬性設定值與所有的鍵盤事件發生前的表單,然後控制項具有焦點。 您可以在表單中,不論其控制項有焦點時按下特定鍵回應。 例如,您可能想要按鍵組合 Ctrl+X 一律在表單上執行相同的動作。
如果您按住 ANSI 鍵, KeyDown 和 KeyPress 事件會 (KeyDown、 KeyPress、 KeyDown、 KeyPress等) 重複替代,直到您放開金鑰,然後發生 KeyUp 事件為止。
KeyPress事件可能涉及任何可列印的鍵盤字元、Ctrl 鍵與標準字母或特殊字元中的字元結合,以及 Enter 或 Backspace 鍵。 使用 KeyDown 和 KeyUp 事件程序來處理 KeyPress 事件無法辨識的任何按鍵,例如函式按鍵、流覽鍵,以及這些與鍵盤修飾詞的任何組合, (Alt、Shift 或 Ctrl 鍵) 。 不同於 KeyDown 及 KeyUp 事件 KeyPress 事件不會指出鍵盤 ; 實體狀態而是表示會對應至按下的按鍵或組合鍵的 ANSI 字元。
KeyPress 解譯的大寫和小寫每一字元為不同的按鍵代碼,因此為兩個不同的字元。
注意事項
Backspace 鍵是 ANSI 字元集的一部分,但 Delete 鍵不是。 如果您使用 Backspace 鍵刪除控制項中的字元,則會造成 KeyPress 事件;如果您使用 Delete 金鑰,則不會。
當您按下或傳送 ANSI 鍵,就會發生 KeyDown 和 KeyPress 事件。 KeyUp 事件發生在任何事件之後按下或傳送按鍵而造成的控制項。 如果按鍵使焦點從一個控制項移到另一個控制項, KeyDown 事件發生的第一個控制項、 KeyPress 及 KeyUp 事件發生的第二個控制項時。
例如,當您移到一筆新的記錄並於該記錄的第一個控制項中輸入字元時,則發生下列事件:
- 目前 (適用於新的記錄)
- 輸入 (適用於新記錄中的第一個控制項)
- GotFocus (適用於控制項)
- KeyDown (適用於控制項)
- KeyPress (適用於控制項)
- BeforeInsert (適用於表單中的新記錄)
- 變更 (適用於如果是文字方塊或下拉式方塊的控制項)
- KeyUp (適用於控制項)
範例
The following example converts text entered in a text box to uppercase as the text is typed in, one character at a time.
若要嘗試此範例,請將下列事件程序新增至包含名為 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 支援與意見反應。