在 MS Access 中禁用 F11 键以防止打开导航窗格
Posted
技术标签:
【中文标题】在 MS Access 中禁用 F11 键以防止打开导航窗格【英文标题】:Disable F11 Key in MS Access to prevent opening the Navigation Pane 【发布时间】:2016-06-29 07:49:01 【问题描述】:我有一个 MS Access 数据库。 Shift 键之前已被禁用,但当用户按下 F11 时,她/他可以看到导航窗格。 是否有锁定 F11 键以防止打开导航窗格的解决方案?
【问题讨论】:
【参考方案1】:首先,这里的答案没有意义,因为如果您有 100 个表单和 100 个报告,那么您就有 200 个对象需要修改。 (这极大地浪费了开发人员的时间)。
更糟糕的是,如果显示报告,则表单没有焦点,当您按 F11 时再次看到导航窗格。
20 年来,Access 一直能够运行代码并针对任何 Fkey 或 alt 键的点击采取措施来运行宏 - 这些设置对应用程序来说是全局的。
因此,简单的解决方案是为应用程序制作一个自动键宏并包含 F11。因此,这将对应用程序 GLOBAL 起作用。
因此创建一个名为 autokeys 的新宏(不是模块)。宏将如下所示:
您可以在中设置功能键
您也可以将 ^ 用于控制键(这样您就可以创建一个全局打印键) 例如:^P
你可以使用 + 作为 shift 键,所以
+F11 将是您按下 shift F11 时运行的宏代码
+^P 将是 shift+ctrl P
在上面我们可以使用 F11 运行代码或做任何我们想做的事情,例如启动一个表单,但如上所示,我们只是将 F11 代码块内的操作代码留空。因此,这可用于让 F1 启动自定义访问“帮助”表单,或将任何 GLOBAL 的 alt 键重新映射到应用程序。
然后,您只需取消选中当前数据库启动设置中的显示导航窗格即可。当然,作为开发人员,您将在启动过程中按住 shift 键以防止启动代码和表单启动——这也绕过自动键宏并忽略您在当前数据库中“设置”的所有设置,例如隐藏导航窗格。因此,按住 shift 键,您可以使用 F11 显示、隐藏导航窗格,并且不让您的应用程序启动代码运行,这样您就可以作为开发人员工作。
【讨论】:
只是澄清一下,因为我花了一点时间才弄清楚您的解决方案:它之所以有效,是因为“AutoKeys”本身就是这里的关键字。如果您将 Submacro 命名为“AutoKeys”,它将查找 F11。天才!我对厨师的赞美。 我正面临@albert 提到的确切问题。虽然+
和^
分别用于Shift
和Ctrl
,但请告诉我Alt
的快捷键是什么?
不支持 alt 键 - 它们是为表单上的标签保留的,并且说 Te&st 将导致 alt-s 跳转到表单上的该标签,因此不支持 alt 键自动键宏。您可以在表单中设置 key preview = yes,然后在 key down 事件中,将返回 alt 键 (18) 代码。然后键值将作为键值返回。 (因此必须出现两个键 - 您必须跟踪序列。我认为您不应该真正尝试覆盖 alt 键(但在表单上使用 keydown 事件,这是可能的)。【参考方案2】:
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyF11
KeyCode = 0
MsgBox "F11 has been disabled.", vbOKOnly, "Disabled Key"
End Select
End Sub
这也可以用其他键来完成。只需添加另一个选择案例语句。
如果您决定在未来进行更改,请确保您有办法显示导航窗格 - 否则您可能无法进行更改。
【讨论】:
您的解决方案是正确的,但如果重点是每个表单的不同表单,则必须添加此代码。我已经搜索并找到了更好的解决方案。 autokeys 宏适用于程序的所有部分。使用宏中定义的 F11 键并运行宏以显示消息,我解决了这个问题。谢谢你的帮助亲爱的朋友 我同意这并不能解决问题。如果您有 200 个表格,那么您必须修改所有表格。如果正在显示一个报告,那么你如何捕获 F11 - 正如指出的那样,自动键宏是正确的解决方案。【参考方案3】:先尝试在谷歌上搜索您的问题。我能够找到多种解决方案。
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyF11 Then KeyCode = 0
End Sub
'(you need to set the form's Key Preview to Yes)
或者试试
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyF11 Then
MsgBox "F11 key is Disabled", vbCritical, "Error"
End If
End Sub
或者这个:
File -> Option -> Current DB -> Use Access special Keys (Uncheck)
参考:Disable F11 with VBA
【讨论】:
您的解决方案是正确的,但如果重点是每个表单的不同表单,则必须添加此代码。我已经搜索并找到了更好的解决方案。 autokeys 宏适用于程序的所有部分。使用宏中定义的 F11 键并运行宏以显示消息,我解决了这个问题。谢谢你的帮助亲爱的朋友【参考方案4】:我认为此链接将提供您正在寻找的答案。
您要查找的功能可以在文件 --> 选项 --> 当前数据库 --> 取消选择“使用访问特殊键”下找到
这将阻止用户使用 F11 Alt+F11 等。
https://docs.microsoft.com/en-us/office/vba/access/concepts/miscellaneous/allowspecialkeys-property
用户仍然可以在打开数据库时按住 shift,然后授予对这些特殊键的访问权限。
【讨论】:
以上是关于在 MS Access 中禁用 F11 键以防止打开导航窗格的主要内容,如果未能解决你的问题,请参考以下文章
Access 2007 拆分表单 VBA:打开时 acNewRec 可防止在表单中跳动 - 就像第一个字段未“选择”一样
我能否以编程方式启用和禁用存储在 SharePoint 中并链接到 ms-access 的 xlsx 文件的 ms-excel 文件共享/共同创作?