| 
    
     |  | ichinose さん、そしてそのほかのみなさまありがとうございます。 実は私はVBAがほとんど初心者です。
 もうすこし簡単にできると思ったのですが、かなりの苦戦をしいられてまして。
 
 ichinose さんはかなり尊敬に値するものを作っていただいて感動しました。
 しかし、高度すぎてよく以下のプログラムがわかっていません。
 実際に以下のプログラムをコピーして使用させていただいたのですが、行を挿入したらやはり、全ページ同じ行数でプレビューできませんでした。
 お時間のあるときで結構ですので、そのへんを少し教えていただけると幸いです。
 申し訳ありませんがよろしくお願いいたします。
 
 >'================================================================
 >Sub main()
 >  Call pr_settei(Range("$A3:$s$27,$A$28:$s$52,$A$53:$s$77,$A$78:$s$102,$A$103:$s$127,$A$128:$s$152"))
 >  ActiveSheet.PrintPreview
 >End Sub
 >'====================================================================
 >Sub pr_settei(prng As Range)
 >  Dim ar As Range
 >  ActiveSheet.Cells.PageBreak = xlPageBreakNone '手動設定の解除
 >  ActiveWindow.View = xlPageBreakPreview
 >  ActiveSheet.PageSetup. _
 >    PrintTitleRows = "$1:$2"
 >' 本当は、↑の辺もパラーメータ渡しの方がいいです。
 >  ActiveSheet.PageSetup.Zoom = 100
 >  ActiveSheet.PageSetup.PrintArea = ""
 >  For Each ar In prng.Areas
 >   ActiveSheet.PageSetup.PrintArea = ar.Address
 >   Call VDRGOFF(ActiveSheet, ar) 'オートマチックの解除
 >   Call HDRGOFF(ActiveSheet, ar)
 >   ActiveSheet.HPageBreaks.Add Range(Cells(ar.Row + ar.Rows.Count, 1), Cells(ar.Row + ar.Rows.Count, ar.Columns.Count))
 >   Next
 >  ActiveWindow.View = xlNormalView
 >  ActiveSheet.PageSetup.PrintArea = prng.Address
 >End Sub
 >'================================================================
 >Sub VDRGOFF(sht As Worksheet, rng As Range)
 >  On Error Resume Next
 >  Dim vv As VPageBreak
 >  For Each vv In sht.VPageBreaks
 >   If Not Application.Intersect(vv.Location, rng) Then
 >     vv.DragOff xlToRight, 1
 >     End If
 >   Next
 >  On Error GoTo 0
 >End Sub
 >'================================================================
 >Sub HDRGOFF(sht As Worksheet, rng As Range)
 >  On Error Resume Next
 >  Dim hh As HPageBreak
 >  For Each hh In sht.HPageBreaks
 >   If Not Application.Intersect(hh.Location, rng) Then
 >    hh.DragOff xlDown, 1
 >    End If
 >   Next
 >  On Error GoTo 0
 >End Sub
 
 |  |