概要
Accessの「分割フォーム」で、フィルタリングしたレコードを順番に確認するような場合があります。
マクロ等で「次へ」ボタンは簡単に設置できますが、最終レコードに到達したあとでもボタンを押すとエラーになってしまいます。
VBAを使ってエラーを回避し、さらに最終レコード到達時には最初のレコードに戻るようにすると使用感がアップします。
前提
左にフォームビュー、右にデータシートビューがあります。
フォームのヘッダー部分に検索窓があり、フィルタリングしたレコードが右にリスト表示されます。
「次のレコード」をフォームに表示するVBA
Accessのフォーム内でレコード移動するときに「次へ」ボタンを配置してVBAで動かす場合は、このように書くだけです。
DoCmd.GoToRecord , , acNext
VBAのエラー
しかし、これで作ったボタンを押し続けて最後のレコードに達すると「エラー」になってしまいます。
エラー処理&最初に戻る
「次へ」ボタンを押し続けて最後のレコードになったら、自動的に最初のレコードに戻ってくれると良いですよね。
上のコードにエラー処理を組みこんで、そのような処理を実現します。
Private Sub cmd次へ_Click()
'最後のレコード(エラー)になったらエラーラベルに飛ぶ
On Error GoTo ErrHandler
'通常の処理:次のレコードに移動
DoCmd.GoToRecord , , acNext
Exit Sub
'エラーラベル(この指標の後にエラー処理を記述)
ErrHandler:
'最初のレコードに行く
DoCmd.GoToRecord , , acFirst
End Sub
実行
《次のレコード》ボタンを押していくだけでグルグルとレコードを移動し続ける事ができるようになります。
フィルターをかけていればフィルター内だけを移動します。
ちなみに都道府県のデータはこちらのサイトからいただきました。