2012-04-01 36 views
1

我正在創建一個用VB.NET編寫的Excel加載項。我想將KeyDown和KeyUp事件綁定到電子表格,以記錄用戶在導航電子表格時按下並釋放箭頭鍵。例如,理想情況下,這些事件將與原生SheetActivate和SheetSelectionChange事件一起內置到Excel中。唉,他們不是。VB.NET中的應用程序級KeyUp/KeyDown事件(不是Windows窗體級別)

請注意,我不感興趣的KeyDown/KEYUP事件Windows窗體控件,因爲我沒有使用Windows窗體這一點。相反,我想在Excel應用程序,工作簿或工作表級別創建這些事件。

+0

Excel不公開這些事件,那是真正的老闆。您必須完成WorkSheet的SelectionChange事件。 – 2012-04-01 19:59:18

回答

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 
相關問題