hatena
hatena
2022/01/20 (木) 10:28:24
リンク先のサンプルのコードを下記のように修正しててみてください。
Option Compare Database
Option Explicit
Const A4Height As Long = 29.7 * 567 'A4・スp・ス・ス・スフ搾ソス・ス・ス=29.7cm 1cm=567twips
Dim PageHeight As Long
Dim BottomPos As Long '追加
Dim PageTop As Long '追加
'ページフォーマット時イベント 追加
Private Sub Report_Page()
BottomPos = BottomPos + PageTop
Me.DrawWidth = 4 '罫線の太さを設定
Me.Line (0, BottomPos)-(Me.Width, BottomPos)
End Sub
Private Sub レポートヘッダー_Format(Cancel As Integer, FormatCount As Integer)
'印刷可能領域下辺のページ上端からの高さを取得
On Error Resume Next
PageHeight = A4Height - Me.Printer.BottomMargin
PageHeight = PageHeight - Me.Section(acPageFooter).Height
PageTop = Me.Top '追加
End Sub
Private Sub グループフッター1_Format(Cancel As Integer, FormatCount As Integer)
If Me.Top + Me.グループフッター1.Height <= PageHeight Then
Me.NextRecord = False
If FormatCount > 20 Then Me.NextRecord = True
'↑想定外の動作で無限ループになった場合でも、20回で止まる
BottomPos = Me.Top '追加
Else
Cancel = True
End If
End Sub
'詳細のフォーマット時イベント 追加
Private Sub 詳細_Format(Cancel As Integer, FormatCount As Integer)
BottomPos = Me.Top - Me.詳細.Height
End Sub
Private Sub 詳細_Print(Cancel As Integer, PrintCount As Integer)
Me.DrawWidth = 1
Dim ctl As Control
For Each ctl In Me.詳細.Controls
If ctl.ControlType = acLine And ctl.Visible = False Then
If ctl.Width = 0 Then Me.Line (ctl.Left, 0)-(ctl.Left, 14400)
End If
Next
End Sub
通報 ...
hatena 様
お世話になっております。
早々のご教授ありがとうございます。
上記コードにてトライしてみます。
また結果ご報告いたします。