Accessのショートカットキーを(KeyDownイベントで)無効化する
今回やりたかったこと
Accessのフォーム上でファンクションキーを押下すると様々な動作が実行されます.たとえば F12 キーを押下すると,「名前を付けて保存」ダイアログが表示されます.
これを無効にし,代わりに私の定義したプロシージャのみを実行させたい.
これは一見,
Accessのオプションで上記の「ショートカット キーを有効にする」を外せばできそうに思えるのですが,実際には意図した通りには全く機能しません.
それも道理で,この項目は
ナビゲーション ウィンドウの表示,直前のウィンドウの表示,VB ウィンドウの表示,実行の中断
‥というごく限られた項目にのみ影響する設定項目なのです.
残念ながら私のやりたいこととは全く合致していません.
解決策
フォームの KeyDown イベントに以下のようにコードを記述します.
(例では F12 キーを私の定義したプロシージャ――"適当なプロシージャ"に差し替え,「名前を付けて保存」ダイアログの表示を止めています.)
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) Select Case KeyCode Case vbKeyF12 Call 適当なプロシージャ KeyCode = 0 End Select End Sub
ポイントは最後の KeyCode = 0
の部分です.
これにより,本来行われるはずだった,「名前を付けて保存」ダイアログの表示は打ち消される格好となります.
自分の定義したショートカットキーとAccessのショートカットキーが衝突して不都合がある場合は,この方法でAccess側のショートカットキーを無効化するとよいかと思います.