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

时间:2015-01-19 13:46:42

标签: vba access-vba

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

现在我在keydown上使用此代码抑制 CTRL + A

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

然后手动按回车键。

有人知道这是否可行?

1 个答案:

答案 0 :(得分:1)

我尝试在带有字段的简单表单上重现您的问题。 通过访问某些事件到其他按钮或控件来使用键CTRL,因此我将主要表单放在此过程中:

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

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

然后我尝试脉冲CTRL A并在中间窗口(在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")