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
サブフォーム間のスクロールを同期させる方法 - hatena chips
上記のページのサンプルですね。上記ページのコメント欄にもありますが、帳票フォームではそのような現象が発生します。
データシートビューだと問題ないので、データシートビュー表示にしてください。
hatenaさま 返信ありがとうございます。
実際のフォームでは条件抽出したデータを2つのサブフォームに表示しており、
条件つき書式で前景色変更や背景色の色分けなどを行っています。
データシートビュー表示にすると条件つき書式が使えなくなるのでは・・と心配しています。
データシートビューにしても平気なのでしょうか?
条件付き書式はデータシートビューでも有効です。
hatenaさま 返信ありがとうございます。
データシートビューにするか帳票フォームのままにするか検討してみます。
もう一つ質問があります。
画面スクロールしないでサブフォームに収まってしまう件数の表示だと
エラーが表示されてしまいます。
これを回避するにはどうしたらよいのでしょうか?
frmMainフォームのタイマー時のイベントプロシージャを下記にように修正してください。
hatenaさま 返信ありがとうございます。
イベントプロシージャの提供もありがとうございます。
早速組み込んでエラーも出ずに思った通りの挙動ができるようになりました。
いろいろ参考にさせていただきます。
ありがとうございました。