| 
    
     |  | ▼shin さん、皆さん、こんばんは。 
 >チャッピーさんありがとうございます。
 >お答えしていただいたことがよくわかっていません。
 >
 >もうすこし具体的にご指導よろしくお願いします。
 
 飛び飛びのページ設定・・・、そんな場合もあるかもしれませんねえ。
 即興で作ったので間違いがあるかもしれませんし、他に方法があるかもしれませんが、
 確認して下さい。
 アクティブシートに対するページ設定です。
 
 '================================================================
 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
 
 |  |