VB.NET中的应用程序级KeyUp / KeyDown事件(不是Windows窗体级别)

时间:2012-04-01 19:28:17

标签: vb.net excel events keypress keydown

我正在创建一个用VB.NET编写的Excel加载项。我想将KeyDown和KeyUp事件绑定到电子表格,以记录用户在浏览电子表格时按下并释放箭头键。

理想情况下,这些事件将与原生的SheetActivate和SheetSelectionChange事件一起构建到Excel中。唉,他们不是。

请注意,我对Windows表单控件的KeyDown / KeyUp事件不感兴趣,因为我没有使用Windows表单。相反,我想在Excel应用程序,工作簿或工作表级别创建这些事件。

1 个答案:

答案 0 :(得分:1)

您可以将Windows API调用GetAsyncKeyStateSelectionChange事件

结合使用

这是一个用于演示

的小型VBA代码段
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Key As Long
    For Key = 3 To 255
        If GetAsyncKeyState(Key) Then
            MsgBox "KeyCode: " & Key & " was pressed."
        End If
    Next
End Sub