プロが教える店舗&オフィスのセキュリティ対策術

Access(2010)で、表形式のフォームにレコードを20行表示しているとします。
次のページボタンをつくり、[埋め込みマクロ]でマクロの実行をさせ、
PageDownというマクロを実行させています。
PageDownというマクロ自体は、キー送信でPageDownを押したのと同じ効果を持たせています。

たとえば全部で9ページあるとしたら、次のページボタンを押すと、
2/9ぺーじというテキストボックスを表示させたいと思っていますが、
どうしたらいいでしょうか?
カレントレコードの値を取得して計算させる形でしょうか?
ちなみに、初期表示では1/9という表示をさせたいです。

A 回答 (1件)

フォームヘッダーかフッターにテキストボックスを配置して


コントロールソースに
=[CurrentRecord]\20+1 & "/" & Count(*)\20+1 & "Pages"
※20は1画面に表示しているレコード数

フォームのレコード移動時イベントに
Private Sub Form_Current()
Me.Recalc
End Sub

とすれば要望に近い事はできます。
が、
PageUp/PageDownだとレコードが移動しますので有効なのですが
マウスのスクロールホイールでクリクリしてもレコードは移動してくれません。
(移動ボタンの値が変化しない・レコードセレクタが旧レコードのままで確認できます)
画面上で適当なレコードをクリックすれば反映されますけど・・・。
なので、ちょっとイマイチ。
これも追加。(マウスホイール使用時イベントです)
(画面のちらつきが多くなるので気になるかも)

Private Sub Form_MouseWheel(ByVal Page As Boolean, ByVal Count As Long)
On Error Resume Next
Application.Echo False '再描画停止
If Count > 0 Then
DoCmd.GoToRecord acDataForm, Me.Name, acNext
ElseIf Count < 0 Then
DoCmd.GoToRecord acDataForm, Me.Name, acPrevious
End If
Application.Echo True
End Sub

以上ご参考まで。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!