KeyDown、KeyUp 事件

在用户按下和释放键时按顺序发生。 当用户按下键时,KeyDown 事件发生。 当用户释放键时,KeyUp 事件发生。

语法

Private Sub对象 _KeyDown ( ByValKeyCodeAs MSForms.ReturnIntegerByValShiftAs fmShiftState)
Private Sub对象 _KeyUp ( ByValKeyCodeAs MSForms.ReturnIntegerByValShiftAs fmShiftState)

KeyDownKeyUp 事件语法具有以下部分:

Part 说明
object 必填。 一个有效对象名称。
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、向上键、向下键、向右键、向左键和 Tab。

  • 组合键和标准键盘修饰符(Shift、Ctrl 或 Alt)。

  • 数字键盘和键盘数字键。

在以下情况下,KeyDown 和 KeyUp 事件不会发生:

  • 用户在窗体上按 Enter,其命令按钮 的 Default 属性设置为 True

  • 用户在窗体上按 Esc,其“ 取消” 属性设置为 True 的命令按钮。

当您按或发送 ANSI 键时,将发生 KeyDown 和 KeyPress 事件。 KeyUp 事件在通过按或发送此键导致的控件的任何事件之后发生。 如果键击导致焦点从一个控件移动到另一个控件,则对于第一个控件,将发生 KeyDown 事件,而对于第二个控件,将发生 KeyPress 和 KeyUp 事件。

与键盘相关的事件的顺序为:

  1. KeyDown
  2. KeyPress
  3. KeyUp

注意

[!注释] KeyDown 和 KeyUp 事件仅适用于表单和表单上的控件。 若要解释 ANSI 字符或查找与已按的键对应的 ANSI 字符,请使用 KeyPress 事件。

另请参阅

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。