【Excelマクロ】マクロで印刷範囲を自動設定する方法

Excelで印刷する際、「必要な範囲だけを印刷したい」と思う場面は多くあります。

しかし、手動で印刷範囲を毎回設定するのは手間がかかり、作業ミスの原因にもなります。

そこで今回は、マクロで印刷範囲を自動的に設定する方法をご紹介します。

日々の業務で印刷作業を行う方にとって、効率化に直結する内容です。

最終行・最終列まで自動で印刷範囲を指定する

まずは、使用しているデータの最終行・最終列を自動で検出し、印刷範囲として設定する方法を見ていきましょう。

次のコードでは、アクティブシートのデータが入っている範囲を自動的に判断し、その範囲を印刷設定します。

Sub SetPrintArea()

    Dim lastRow As Long
    Dim lastCol As Long

    ' 最終行と最終列を取得
    lastRow = Cells(Rows.Count, 1).End(xlUp).Row
    lastCol = Cells(1, Columns.Count).End(xlToLeft).Column

    ' 印刷範囲を設定
    ActiveSheet.PageSetup.PrintArea = Range(Cells(1, 1), Cells(lastRow, lastCol)).Address

End Sub

このマクロを実行すると、A1セルから最終データのセルまでを自動で印刷範囲として設定してくれます。

コードの補足説明

  • Cells(Rows.Count, 1).End(xlUp).Row
     → A列の最終行を取得(データが入力されている最後の行)
  • Cells(1, Columns.Count).End(xlToLeft).Column
     → 1行目の最終列を取得(データがある最後の列)
  • Range(Cells(1, 1), Cells(lastRow, lastCol)).Address
     → A1セルから最後のデータセルまでの範囲をアドレス形式で取得

この範囲を PrintArea に指定することで、毎回自動的に正しい印刷範囲が反映されるようになります。

データ範囲を名前付きシートで個別に設定する

複数のシートがあり、それぞれのシートで印刷範囲を自動で設定したい場合もあります。

次のコードでは、ブック内のすべてのワークシートに対して、印刷範囲を自動設定します。

Sub SetPrintAreaAllSheets()

    Dim ws As Worksheet
    Dim lastRow As Long
    Dim lastCol As Long

    For Each ws In Worksheets
        With ws
            lastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
            lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
            .PageSetup.PrintArea = .Range(.Cells(1, 1), .Cells(lastRow, lastCol)).Address
        End With
    Next ws

End Sub

このようにループを使えば、すべてのシートで一括して印刷範囲を自動設定できます。

実装するメリット

マクロで印刷範囲を自動設定することで、次のようなメリットがあります。

  • 手動で印刷範囲を選択する手間が省ける
  • データ量が日々変わるシートでも正確に印刷範囲を設定できる
  • 作業ミスを減らし、印刷ずれや不要な余白を回避できる
  • 複数シートの対応も簡単にできるため、業務効率が大きく向上する

印刷範囲のミスは地味なストレスの原因になります。

その小さなストレスを1つずつ減らしていくことが、全体の作業品質にもつながります。

まとめ

印刷範囲を毎回手作業で設定するのは、想像以上に時間を取られる作業です。

今回紹介したように、最終行・列を自動で取得して印刷範囲を設定するマクロを使えば、その作業を自動化できます。

特に、印刷するたびに範囲が変わる帳票や報告書を扱う方には、とても有効な手法です。

まずは1シートで試してみて、慣れてきたら全シート対応のマクロに切り替えていくとスムーズです。

Excelの印刷も、マクロを使えば効率化できます

少しずつ、あなたの業務にあわせた自動化を進めていきましょう。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール