KeyDown、KeyUp 事件

在使用者按下並放開按鍵時依序發生。 KeyDown 會在使用者按下按鍵時發生。 KeyUp 會在使用者釋出金鑰時發生。

語法

Private Sub物件 _KeyDown ( ByValKeyCodeAs MSForms.ReturnIntegerByValShiftAs fmShiftState)
Private Sub物件 _KeyUp ( ByValKeyCodeAs MSForms.ReturnIntegerByValShiftAs fmShiftState)

KeyDownKeyUp事件語法具有下列部分:

部分 描述
物件 必要。 有效的物件名稱。
KeyCode 此為必要動作。 整數,表示已按下或放開之金鑰的金鑰代碼。
Shift 此為必要動作。 SHIFT、CTRL 和 ALT 的狀態。

設定

Shift的設定如下:

常數 描述
fmShiftMask 1 已按下 SHIFT。
fmCtrlMask 2 按下 CTRL。
fmAltMask 4 已按下 ALT。

註解

KeyDown 事件會在使用者按下執行中表單上的按鍵,而該表單或其上的控制項具有 焦點時發生。 KeyDown 和 KeyPress 事件會重複替代,直到使用者釋放金鑰為止,此時會發生 KeyUp 事件。 具有焦點的表單或控制項會接收所有按鍵。 當表單中含有控制項,或是表單中所有的可見控制項尚未全部失效時,該表單便無法取得焦點。

如果您使用宏中的 SendKeys 巨集指令或 Visual Basic 中的 SendKeys 語句 ,將按鍵傳送至表單或控制項,也會發生這些事件。

KeyDown 和 KeyUp 事件通常用來辨識或區別:

  • 擴充字元按鍵,例如功能鍵。

  • 流覽鍵,例如 HOME、END、PAGEUP、PAGEDOWN、UP ARROW、向下鍵、向右鍵、向左鍵和索引標籤。

  • SHIFT、CTRL 或 ALT) (按鍵和標準鍵盤修飾詞的組合。

  • 數字鍵台及鍵盤數字鍵。

在下列情況下,不會發生 KeyDown 和 KeyUp 事件:

  • 使用者在具有 [ 預設 ] 屬性設為 True之命令按鈕的表單上按 Enter。

  • 使用者在表單上按下 Esc,其命令按鈕的 Cancel 屬性設定為 True

當您按下或傳送 ANSI 鍵,就會發生 KeyDown 和 KeyPress 事件。 KeyUp 事件發生在任何事件之後按下或傳送按鍵而造成的控制項。 如果按鍵使焦點從一個控制項移到另一個控制項, KeyDown 事件發生的第一個控制項、 KeyPress 及 KeyUp 事件發生的第二個控制項時。

鍵盤相關事件的順序如下:

  1. KeyDown
  2. KeyPress
  3. KeyUp

注意事項

KeyDown 和 KeyUp 事件只適用于表單上的表單和控制項。 若要解譯 ANSI 字元,或找出與按下按鍵對應的 ANSI 字元,請使用 KeyPress 事件。

另請參閱

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應