如何检测是否按下了特定键?

Oll*_*lie 4 excel events vba excel-vba userform

我想知道是否有办法检测是否按下了特定键(如退格键).这是我正在拍摄的:

Private Sub SomeTextBox_Change()

    If len(Me.SomeTextBox.Value) = 3 and KEYPRESSED is NOT BACKSPACE Then
         <.......Code Here>
    Else
         <.......Code Here>
    End if

End Sub
Run Code Online (Sandbox Code Playgroud)

mie*_*elk 7

您应该使用KeyPress事件而不是Change事件:

Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)

    If Len(Me.SomeTextBox.Value) = 3 And KeyAscii <> 8 Then 'Backspace has keycode = 8.
         <.......Code Here>
    Else
         <.......Code Here>
    End If

End Sub
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到完整的密钥代码列表:http://www.asciitable.com/


xs6*_*xs6 5

本示例将“InsertProc”分配给按键序列 CTRL+PLUS SIGN,并将“SpecialPrintProc”分配给按键序列 SHIFT+CTRL+RIGHT ARROW。

Application.OnKey "^{+}", "InsertProc" 
Application.OnKey "+^{RIGHT}","SpecialPrintProc"
Run Code Online (Sandbox Code Playgroud)

有关更多示例和信息,请继续:https : //msdn.microsoft.com/en-us/library/office/aa195807%28v=office.11​​%29.aspx


PAS*_*V N 5

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)

If KeyCode.Value = vbKeyF1 Then
       MsgBox "F1 is pressed"
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)