是否可以在 Access 2007 中禁用 Ctrl + A?

是否可以在 Access 2007 中禁用 Ctrl + A?

我想禁用 Access 2007 中的命令Ctrl+ A(全选)。可以吗?

答案1

您可以在 Access 中使用此代码来捕获CTRL+A并忽略它。缺点是您必须将其添加到您希望阻止的每个表单中。(优点:您不需要阻止所有形式)

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyA And Shift = acCtrlMask Then 'Catch Ctrl+A
        KeyCode = 0 'Suppress keypress 
    End If
End Sub

将此添加到Form > On Key Down活动中

重要提示:滚动到事件列表底部,然后更改Key Preview是的

答案2

创建一个名为 AutoKeys 的宏。在第一列中输入 ^A,在第二列中从下拉列表中选择 Beep。这样,只要在应用中的任何地方按下 ^A,就会发出 Beep 声。

如果您什么都不想做(即不发出哔声),那么您必须编写一个不执行任何操作的函数,然后使用 RunCode 操作来调用该函数。

如果您想在某些上下文中允许它,而在其他上下文中不允许,则必须为此编写更复杂的代码。我不太确定该代码会是什么样子,因为它引发了许多有趣的问题。

当然,这是一个 StackOverflow 问题...

(坦率地说,我认为整个问题一直都属于那里,因为答案需要编写代码或创建类似代码的东西,即宏)

答案3

#IfWinActive, ahk_class OMain
^a::Return
#IfWinActive

在里面自动热键自动化语言。

或者:

#IfWinActive, ahk_class OMain
^a::MsgBox, Oh god oh god we're all going to die
#IfWinActive

答案4

以下代码选择文本框或组合框中的所有文本(而不是选择整个表格)。

在表单 KeyDown 事件中使用此代码,并且不要忘记将表单事件属性中的“Key Preview”属性也设置为 Yes(否则它不会触发 CTRL + A 的 keydown 事件)。

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
    If KeyCode = vbKeyA And Shift = acCtrlMask Then
        If TypeOf Me.ActiveControl Is TextBox Then
            Dim txt As TextBox
            Set txt = Me.ActiveControl
            txt.SelStart = 0
            txt.SelLength = Len(txt.text)
        ElseIf TypeOf Me.ActiveControl Is ComboBox Then
            Dim cmb As ComboBox
            Set cmb = Me.ActiveControl
            cmb.SelStart = 0
            cmb.SelLength = Len(cmb.text)
        End If
        KeyCode = 0 ' Cancel the default action (of selecting the entire table)
    End If
End Sub

相关内容