我想禁用 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