Excel VBAのUserFormにもキーボード操作用のイベントハンドラは各種用意されています。
が、これがうまく動かないと困った人もいるのでは。
はい、私のことですけども。
Application.OnKeyを使っても無駄でした。
UserFormのキーボード操作イベントハンドラが実行されるには条件があって、
- UserForm上にコントローラーがひとつもない
- UserForm上のコントローラーがすべて選択不可になっている
のどちらかが必要っぽいです。
なんてこったい。
解決法ですが、「UserForm上の選択可能なすべてのコントローラーにキーボード操作イベントハンドラを実装する」以外にありませんかね?
もちろんイベントハンドラの処理は共通関数化するにしても、宣言するだけでエライ数になる場合もあるわけで…。
なんとかならないかなー…。
数字のKeyCodeには気をつけよう
キーボード操作イベントハンドラ引数のKeyCodeですが、数字キーはテンキーとキーボード上段で異なるので注意をしましょう。
テンキーの0は96、キーボード上段の0は48です。
他にもニッチなIT関連要素をまとめていますので、よければ一覧記事もご覧ください。