2012-04-01 22 views
1

私はVB.NETで書かれたExcelアドインを作成しています。私は、ユーザーがスプレッドシートをナビゲート中に矢印キーを押して離したときに記録するために、KeyDownとKeyUpイベントをスプレッドシートにバインドしたいと思います。VB.NET(Windowsフォームレベルではありません)のアプリケーションレベルKeyUp/KeyDownイベント

理想的には、これらのイベントは、たとえば、ネイティブのSheetActivateイベントとSheetSelectionChangeイベントとともにExcelに組み込まれます。悲しいかな、そうではありません。

私はこのためにWindowsフォームを使用していないため、WindowsフォームコントロールのKeyDown/KeyUpイベントには興味がありません。むしろ、これらのイベントをExcelアプリケーション、ワークブック、またはワークシート・レベルで作成したいと考えています。

+0

Excelを実証するための小さなVBAの抜粋だが、バックが停止場所それはだ、これらのイベントを公開しません。 WorkSheetのSelectionChangeイベントを行う必要があります。 –

答えて

1

あなたはSelectionChangeイベント

と一緒にWindows API呼び出しGetAsyncKeyStateを使用することができます。ここ

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 
関連する問題