将 {CTRL+A} 替换为 {TAB} 或 {ENTER}

replace {CTRL+A} to {TAB} or {ENTER}

出于 SAP 中的特定原因,我打印了一个包含 CTRL+A 的条码。我想重复使用相同的条形码,但将 CTRL+A 更改为 TAB输入

现在我在按键上使用以下代码抑制 CTRL+A:

    If KeyCode = vbKeyA And Shift = acCtrlMask Then 'Catch Ctrl+A
    KeyCode = 0 'Suppress keypress

然后手动按回车键。

有谁知道这是否可行?

我尝试在一个带有字段的简单表单上重现您的问题。 CTRL键用于访问其他按钮或控件的某些事件,因此我在主窗体上放置了这个程序:

Private Sub Form_KeyPress(KeyAscii As Integer)
Debug.Print KeyAscii
End Sub

您可以在字段(控件)或主窗体上使用事件 KeyPress。这种情况需要从主窗体。

然后我尝试按 CTRL A 并在即时 window(在 VBA)上看到数字是 1.
解决方法很简单,检测这个KeyAscii,模拟SENDKEYS替代。

Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 1 Then
    SendKeys "{Enter}" 'or eny key that you need
End If
End Sub

您可以在以下位置找到有关 SendKeys 的更多帮助:MS Access Help

因此,我认为某些具有 Windows 7/8/9 和 Access 2007/2010/2013 的计算机可能出于安全原因锁定您的命令 SendKeys。
在那些情况下,我更喜欢使用需要的直接命令:

me.controlfield.setfocus

还有一种可能是(我平时用这个最后)

DoCmd.GoToControl ("fieldname")