データシート形式のフォームではキーボードの↑キーや↓キーによって簡単に前後のレコードを移動することができますが、表形式フォームでこのキーボード操作を行うと前後の"フィールド移動"となってしまいます。しかし、次のような各テキストボックスの[キークリック時]イベントを利用した方法を使えば、表形式フォームでも↑・↓キーによってレコード移動させることができます。
ここでは複数のテキストボックスでこの方法を使うことを想定して、コードを簡潔にするために実際のレコード移動の操作は別の単独のSubプロシージャを呼び出して使うこととしました。
Private Sub txtData1_KeyDown(KeyCode As Integer, Shift As Integer)
'"txtData1"テキストボックスでキーボードが操作されたとき
CurslUpDown KeyCode
End Sub
Private Sub txtData2_KeyDown(KeyCode As Integer, Shift As Integer)
'"txtData2"テキストボックスでキーボードが操作されたとき
CurslUpDown KeyCode
End Sub
複数のフォームでこの方法を使う場合には次のプロシージャは"標準モジュール"に作成します。
Sub CurslUpDown(KeyCode As Integer)
On Error Resume Next
'先頭レコードで↑が押されたときや最終レコードで↓キーが押されたときは
'以下のコードでエラーが発生するので、無視するようにします
If KeyCode = vbKeyUp Then
'↑キーが押されたとき、前のレコードに移動
DoCmd.GoToRecord , , acPrevious
ElseIf KeyCode = vbKeyDown Then
'↓キーが押されたとき、次のレコードに移動
DoCmd.GoToRecord , , acNext
End If
End Sub
|