【VBAリファレンス|実務向け】実務で差がつく!Excelの「印刷範囲」設定とVBAによる自動化テクニック

スポンサーリンク

導入:なぜ「印刷範囲」の設定が必要なのか

実務において、作成した帳票やレポートを印刷する際、毎回「印刷したい範囲を選択してから印刷」していませんか?あるいは、不要な列や行まで一緒に印刷されてしまい、紙を無駄にした経験はないでしょうか。
「印刷範囲」をあらかじめ設定しておけば、ボタン一つで必要な箇所だけを綺麗に印刷できます。さらに、VBAでこの設定を自動化すれば、データ量に応じて印刷範囲を動的に変更することも可能です。今回は、手動での基本操作と、業務効率を劇的に上げるVBAでの制御方法を解説します。

基礎知識:印刷範囲とは何か

Excelの「印刷範囲」とは、ワークシートの中で「ここだけを印刷する」と明示的に指定した領域のことです。この設定を行うと、印刷時に「選択した範囲」だけが自動的に対象となります。設定内容はブックを保存する際に一緒に記録されるため、一度設定すれば次回の印刷時も同じ範囲が維持されます。

実装:手動設定とVBAによる自動化

手動で設定する場合は、対象範囲を選択し、[ページレイアウト]タブの[印刷範囲]から[印刷範囲の設定]をクリックします。
しかし、実務では「データが追加されるたびに印刷範囲を広げる」という作業が発生しがちです。これをVBAで解決すれば、データの行数を数えて自動的に範囲を調整できます。

サンプルプログラム:動的に印刷範囲を設定するマクロ

以下のコードは、アクティブシートのA列にデータが入っている最終行までを自動的に印刷範囲に設定するプログラムです。

Sub SetPrintAreaDynamic()
Dim lastRow As Long

‘ A列の最終行を取得(データが追加されても自動追従します)
lastRow = Cells(Rows.Count, “A”).End(xlUp).Row

‘ A1からF列の最終行までを印刷範囲に設定
‘ 範囲を文字列で指定するのがポイントです
ActiveSheet.PageSetup.PrintArea = “$A$1:$F$” & lastRow

MsgBox “印刷範囲をA1からF” & lastRow & “までに設定しました。”
End Sub

応用・注意点:現場で役立つアドバイス

1. 印刷範囲の解除を忘れずに
マクロで設定した範囲を解除したい場合は、コード内で ActiveSheet.PageSetup.PrintArea = “” と記述してください。これを忘れると、データが増減しても古い印刷範囲が残り、印刷プレビューで意図しない結果になることがあります。

2. ページ設定との組み合わせ
印刷範囲を設定しても、内容が紙に収まらない場合があります。実務では、あわせて ActiveSheet.PageSetup.Zoom = False および ActiveSheet.PageSetup.FitToPagesWide = 1 を設定することで、「横幅を1ページに収める」という設定をVBAで完結させることができます。

3. 誤操作の防止
印刷範囲を手動で設定すると、ユーザーが意図せず範囲をずらしてしまうことがあります。VBAで「印刷ボタン」をシート上に作成し、押すたびに最新の範囲を再計算するように運用を変えるだけで、印刷トラブルは大幅に減少します。ぜひ試してみてください。

タイトルとURLをコピーしました