将 {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")
出于 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")