#091 ダイアログをファンクションキーで閉じるには? フォーム、VBA

ダイアログをファンクションキーで閉じるようにするには、まずファンクションキーが押されたことを検出しなければなりません。そのためには[キークリック時]イベントを利用します。このイベントではどのキーが押されたかも知ることができますので、押されたキーが"閉じる"機能を割り当てたファンクションキーかどうか調べればよいわけです。

次の例では、[F5]キー(定数:vbKeyF5)が押されたらフォームを閉じます。
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

  If KeyCode = vbKeyF5 Then
    DoCmd.Close acForm, Me.Name
  End If

End Sub
この際、1つ注意すべきことがあります。普通、フォームにはいくつかのコントロールが配置され、そのいずれかにフォーカスがある状態になります。あるテキストボックスの[タブ移動順]プロパティが"0"だったとすると、フォームが開いた直後はこのテキストボックスの入力から作業が始まるようになります。そして、その状態でキーボードを押したとすると、そのテキストボックスにおける[キークリック時]イベントが発生してしまうのです。したがって、F5キーでフォームを閉じるようにするにはすべてのコントロールの[キークリック時]イベントプロシージャに上記のようなコードを書かなければならなくなってしまいます。そこで重要なのが、フォームの[キーボードイベント取得]プロパティを"はい"に設定することです。こうすることによって、どのコントロールにフォーカスがあっても、キーボードが押されると Form_KeyDown イベントプロシージャが真っ先に実行されるようになります。各コントロールごとの[キークリック時]イベントプロシージャも必要ありません。
| Index | Prev | Next |



T'sFactory
Accessで動く生産管理DB
Ureru Express
Webで使う販売顧客管理
Access開発&アドバイス
DB開発やテクニカルアドバイス
Copyright © T'sWare All rights reserved