office.notes@misora05

本館ブログのうち,Office・Windwsがらみのネタ+@を抜き出したもの.月水金更新予定.

Accessのショートカットキーを(KeyDownイベントで)無効化する

今回やりたかったこと

Accessのフォーム上でファンクションキーを押下すると様々な動作が実行されます.たとえば F12 キーを押下すると,「名前を付けて保存」ダイアログが表示されます.
これを無効にし,代わりに私の定義したプロシージャのみを実行させたい.

これは一見,

Accessのオプションで上記の「ショートカット キーを有効にする」を外せばできそうに思えるのですが,実際には意図した通りには全く機能しません.
それも道理で,この項目は

ナビゲーション ウィンドウの表示,直前のウィンドウの表示,VB ウィンドウの表示,実行の中断

‥というごく限られた項目にのみ影響する設定項目なのです.
残念ながら私のやりたいこととは全く合致していません.

Microsoft Store (マイクロソフトストア)

解決策

フォームの 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側のショートカットキーを無効化するとよいかと思います.

Microsoft Store (マイクロソフトストア)