エクセルで、データを縦列で自動で追加していくマクロを作ったのですが、
それに合わせて印刷範囲を自動で判別してくれる必要があり、色々と調べました。
目次
印刷範囲の設定
厄介なことに最終列を自動で判別するだけでなく、
印刷範囲の「開始行」と「最終行」は常に固定のため、数値でしておきたくて作成したのが以下の文です。
Dim Start_Low As Long
Dim Last_Col As Long
'洗濯中のシートで処理
With ActiveSheet
'指定シートの開始行を指定(この場合は2行目のA列から)
Start_Row = .Cells(2, "A").Row
'指定シートの最終列を取得(34行目の最終列までを範囲に)
Last_Col = .Cells(34, Columns.Count).End(xlToLeft).Column
'印刷範囲を設定(34行目A列から開始行の最終列までを範囲指定)
Pr_Area = .Range(.Cells(34, "A"), .Cells(Start_Row, Last_Col)).Address
End With
実際に使って印刷プレビューをしてみる
Dim Start_Low As Long
Dim Last_Col As Long
With ActiveSheet
'指定シートの開始行を指定(2行目のA列)
Start_Row = .Cells(2, "A").Row
'指定シートの最終列を取得(34行目の最終列まで)
Last_Col = .Cells(34, Columns.Count).End(xlToLeft).Column
'印刷範囲を設定(34行目A列から開始行の最終列までを範囲指定)
Pr_Area = .Range(.Cells(34, "A"), .Cells(Start_Row, Last_Col)).Address
'サイズはA3に
.PageSetup.PaperSize = xlPaperA3
'印刷向きは横向き
.PageSetup.Orientation = xlLandscape
'選択した「Pr_Area」を印刷範囲に
.PageSetup.PrintArea = Pr_Area
'水平の中央位置に
.PageSetup.CenterHorizontally = True
'垂直の中央位置に
.PageSetup.CenterVertically = True
' 印刷プレビュー
.PrintOut Preview:=True
' 印刷範囲の設定解除
.PageSetup.PrintArea = False
End With