Excel VBA:无法捕获击键

问题描述 投票:0回答:1

我有一个用户表单,为用户提供 6 个选择。他们可以单击用户表单上的相应选项,也可以按键盘上的数字 1 到 6。我的问题是按键或按键事件永远不会触发。我需要捕获按下的键并检查它是否在“显示用户窗体时”的数字 1 到 6 中以运行下一个子程序。这是我的最新尝试。无论我尝试捕获什么事件,似乎都无法捕获按下的按键。当我在子程序的开头放置一个断点时,它永远不会被调用。

Private Sub Userform_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    If KeyCode = 49 Then
        MsgBox "You pressed the '1' key!"
    ElseIf KeyCode = 50 Then
        MsgBox "You pressed the '2' key!"
    ElseIf KeyCode = 51 Then
        MsgBox "You pressed the '3' key!"
    ElseIf KeyCode = 52 Then
        MsgBox "You pressed the '4' key!"
    ElseIf KeyCode = 53 Then
        MsgBox "You pressed the '5' key!"
    ElseIf KeyCode = 54 Then
        MsgBox "You pressed the '6' key!"
    End If
End Sub
excel vba
1个回答
0
投票

谢谢 GSerg,这让我开始思考。在测试了所有焦点控件后,发现当表单初始化时,焦点被设置为第三帧中的图像控件。将控件列表打印到即时窗口,查看创建顺序、制表符索引和制表符停止位,没有任何迹象表明 VBA 选择此控件作为焦点的原因。我现在在初始化子中设置焦点并调整了 keydown,一切正常。再次感谢 GSerg。

© www.soinside.com 2019 - 2024. All rights reserved.