#071 表形式フォームでの↑・↓キーでレコード移動させるには? フォーム、VBA

データシート形式のフォームではキーボードのキーやキーによって簡単に前後のレコードを移動することができますが、表形式フォームでこのキーボード操作を行うと前後の"フィールド移動"となってしまいます。しかし、次のような各テキストボックスの[キークリック時]イベントを利用した方法を使えば、表形式フォームでも↑・↓キーによってレコード移動させることができます。

ここでは複数のテキストボックスでこの方法を使うことを想定して、コードを簡潔にするために実際のレコード移動の操作は別の単独の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
| Index | Prev | Next |



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