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

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

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

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

您可以将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