专为易于使用而设计的 Microsoft 关系数据库管理系统系列。
注:此回复已自动翻译。因此,它可能包含语法错误或表达尴尬。
你好 @何尧
我明白你想在 Access 表单中通过覆盖特定的内置组合键(比如 Ctrl + 方向键)来定制键盘快捷键,同时保持标准组合键(比如 Ctrl + C、V 或 F)不变。
要实现这一点,你需要在 MS Access 处理键盘输入之前,在表单级别拦截按键。首先,在设计视图中打开你的表单。在属性表的“事件”选项卡下,将“键盘预览”属性设置为“是”。这一步很关键,因为它允许表单在控件响应前捕捉键盘事件。
在同一个选项卡中,找到“按键按下”属性,选择[事件过程],然后打开 VBA 编辑器。你可以利用这个事件来评估并管理输入的按键。
下面是一个例子,当按下 Ctrl + 上箭头时,会打开一个特定表单,而不是触发默认的 Access 操作:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Dim isCtrlDown As Boolean
isCtrlDown = (Shift And acCtrlMask) > 0
If isCtrlDown Then
Select Case KeyCode
Case vbKeyUp
' Execute your custom logic here
DoCmd.OpenForm "Form_1"
' Suppress the default Access action
KeyCode = 0
End Select
End If
End Sub
我们使用按位操作 (Shift And acCtrlMask) > 0 来可靠地检测 Ctrl 键是否被按下。
最重要的部分是在执行你的自定义逻辑后将 KeyCode = 0。这实际上清除了按键缓冲区。Access 会将其解释为没有按键被按下,从而防止与该快捷键相关的原生行为。
因为我们只在 Select Case 语句中指定你的目标键(比如 vbKeyUp),所以像 Ctrl + C 或 Ctrl + F 这样的标准按键组合会简单地绕过 KeyCode = 0 命令。因此,它们的默认功能保持完全不变。
请试试看,然后告诉我结果。
注意:如果您希望收到本帖相关的邮件通知,请按照我们文档中的步骤启用电子邮件通知。