【VBAリファレンス|実務向け】【Excel実務】印刷範囲を解除して「意図しない余白」を撃退するテクニック

スポンサーリンク

なぜ印刷範囲の解除が重要なのか

実務でExcelを扱っていると、「印刷すると一部しか出力されない」「余計な空白ページが混ざる」といったトラブルに遭遇したことはありませんか?その原因の多くは、過去に設定された「印刷範囲」が残っていることにあります。一度設定した印刷範囲は、シートを更新しても自動では消えません。この「見えない制約」を適切に解除することは、資料作成の仕上げにおいて非常に重要なスキルです。

基礎知識:印刷範囲の仕組み

Excelの「印刷範囲」とは、シート全体の中で「ここだけを印刷する」と指定する機能です。一度設定されると、Excelはその範囲外を印刷対象から除外します。
VBAを扱う際も、この一般機能の仕様を理解しておくことは必須です。なぜなら、マクロで帳票を出力する際、前回の印刷範囲設定が残っていると、意図しないレイアウト崩れを引き起こす可能性があるからです。

実装・解決策

印刷範囲を解除するには、リボンメニューの[ページレイアウト]タブにある[印刷範囲]ボタンから[印刷範囲のクリア]を選択します。しかし、何十枚ものシートを扱う業務では、手動での操作は非効率です。
そこで、VBAを使って「アクティブシートの印刷範囲を強制的にリセットする」手法を身につけておきましょう。これにより、マクロによる自動帳票作成時に、常にクリーンな状態で印刷を実行できるようになります。

サンプルプログラム

以下のコードは、現在選択しているシートの印刷範囲をクリアするための汎用的なマクロです。標準モジュールに貼り付けてお使いください。

Sub ClearPrintArea_AllSheets()
‘ 念のため、現在のアクティブシートの印刷範囲を解除する
‘ PageSetupオブジェクトのPrintAreaプロパティを空文字にすることで解除されます
ActiveSheet.PageSetup.PrintArea = “”

MsgBox “現在のシートの印刷範囲を解除しました。”, vbInformation
End Sub

‘ 応用:ブック内の全シートの印刷範囲を一括解除する場合
Sub ClearPrintArea_EntireWorkbook()
Dim ws As Worksheet

‘ ブック内のすべてのシートをループ処理
For Each ws In ThisWorkbook.Worksheets
ws.PageSetup.PrintArea = “”
Next ws

MsgBox “ブック内のすべてのシートの印刷範囲を解除しました。”, vbInformation
End Sub

応用・注意点

実務で活用する際の注意点は以下の3点です。

1. PrintAreaへの代入: VBAにおいて印刷範囲の設定解除は、プロパティに「””(空文字)」を代入することで行います。Nothingを代入しようとするとエラーになるため注意してください。
2. マクロ実行のタイミング: 帳票出力用のマクロを作成する際は、処理の冒頭で「印刷範囲のクリア」を記述しておくのが定石です。これにより、ユーザー側で誤って印刷範囲が設定されていても、マクロが正しく動作します。
3. 隠しシートへの配慮: 全シートを一括解除する場合、非表示シートが含まれているとエラーになることがあります。必要に応じて「If ws.Visible = xlSheetVisible Then」といった条件分岐を加えると、より堅牢なプログラムになります。

印刷範囲の管理は地味ですが、資料の正確性を担保するための第一歩です。ぜひ、日々の業務自動化に組み込んでみてください。

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