Microsoft Access 掲示板

サブフォーム間のスクロールについて

6 コメント
views
4 フォロー

いつもお世話になっております。
サブフォーム間のスクロールについて質問があります。
サンプルプロクラムをダウンロードして組み込んだのですが
スクロールバーを最後まで動かすと画像のように1行ずれてしまいます。
最後まで同期してスクロールしたいのですが、どのようにしたらよいのでしょうか?
よろしくお願いいたします。画像1

すぅ
作成: 2022/09/29 (木) 15:42:18
通報 ...
1

サブフォーム間のスクロールを同期させる方法 - hatena chips

上記のページのサンプルですね。上記ページのコメント欄にもありますが、帳票フォームではそのような現象が発生します。
データシートビューだと問題ないので、データシートビュー表示にしてください。

2
すぅ 2022/09/30 (金) 17:12:55 25b58@b9210

hatenaさま 返信ありがとうございます。
実際のフォームでは条件抽出したデータを2つのサブフォームに表示しており、
条件つき書式で前景色変更や背景色の色分けなどを行っています。
データシートビュー表示にすると条件つき書式が使えなくなるのでは・・と心配しています。
データシートビューにしても平気なのでしょうか?

3

条件付き書式はデータシートビューでも有効です。

4
すぅ 2022/10/03 (月) 18:10:50 25b58@b9210

hatenaさま 返信ありがとうございます。
データシートビューにするか帳票フォームのままにするか検討してみます。
もう一つ質問があります。
画面スクロールしないでサブフォームに収まってしまう件数の表示だと
エラーが表示されてしまいます。
これを回避するにはどうしたらよいのでしょうか?画像1

5

frmMainフォームのタイマー時のイベントプロシージャを下記にように修正してください。

Private Sub Form_Timer()
    On Error GoTo ErrorHandler

    ' SyncScroll オブジェクトを初期化します。
    If ss.Ready = False Then
        If ss.SetForms(Me.subf1.Form, Me.subf2.Form) Then
            ' 初期化に失敗した場合はユーザー定義エラーを発生させます。
            Err.Raise Number:=vbObjectError + 1, _
                      Description:="サブフォームの特定に失敗しました。"
        End If
    End If

    ' 同期スクロールさせます。
    If ss.Sync(curIdx) = 0 Then
        ' 同期に失敗した場合はユーザー定義エラーを発生させます。
        Err.Raise Number:=vbObjectError + 2, _
                  Description:="サブフォームの同期に失敗しました。"
    End If

ExitProcedure:
    Exit Sub

ErrorHandler:
    ' エラー発生時
    If Err.Number = -2147221503 Then
        Me.TimerInterval = 0
    Else
        Dim s As String
        s = "以下のエラーが発生しました。@" & Err.Number & ":" _
          & Err.Description & "@タイマーイベントを停止します。"
        Me.TimerInterval = 0                     ' タイマーイベント停止
        Beep
        Call Eval("MsgBox('" & s & "', " & vbCritical & ", '" _
                & CurrentProject.Name & "')")
    End If
End Sub
6
すぅ 2022/10/04 (火) 17:48:11 25b58@b9210

hatenaさま 返信ありがとうございます。
イベントプロシージャの提供もありがとうございます。
早速組み込んでエラーも出ずに思った通りの挙動ができるようになりました。
いろいろ参考にさせていただきます。
ありがとうございました。