PR
スポンサーリンク

【ExcelVBA】マクロで印刷範囲を設定する方法(変数で範囲を可変にする・印刷範囲をクリアする)

スポンサーリンク
エクセルVBA-マクロで印刷範囲の設定する方法-アイキャッチ 印刷設定・ページ設定
スポンサーリンク
スポンサーリンク
スポンサーリンク

手動で印刷範囲を指定する方法

まず手動で設定するときの手順です。
エクセルの「ページ設定」は下の手順で開きます。

ファイル⇒印刷⇒ページ設定の順に開きます。
ページ設定ウィンドウの中には「ページ」「余白」「ヘッダー/フッター」「シート」のタブがあります。

印刷ページ設定画面の画像

この一番右の「シート」タブの一番上にある「印刷範囲」を設定することで指定が可能です。

ページ設定ウィンドウのシートタブの画像

もしくは、シート上で印刷範囲を設定したい範囲をドラッグし、「ページレイアウト」タブの「印刷範囲」から「印刷範囲の設定」を選択することで設定することも可能です。

ページレイアウトタブの印刷設定→印刷範囲の設定ボタンをクリックする画像
スポンサーリンク

マクロで印刷範囲を指定する方法

マクロで印刷範囲を指定する方法を説明します。

印刷範囲を設定するときはVBA関数の「PageSetup.PrintArea」を使用して指定します。

ActiveSheet.PageSetup.PrintArea = “ここに範囲指定”

下のサンプルでは1行目~20行目までを印刷範囲に指定して印刷します。
表の範囲はもっと下までありますが、赤枠の部分だけを印刷するようにします。

印刷範囲を指定するイメージの画像

サンプルマクロで実行している内容
①プリンタ接続をオフにする
②ページ設定を行う
③印刷範囲をA1セル~D20セルに設定する
④プリンタ接続をオンにする

Sub sample1()

    'プリンタ接続をオフにする…⓵
    Application.PrintCommunication = False
    
    'ページ設定を行う…⓶
    With ActiveSheet.PageSetup
        
        '印刷範囲を設定する…⓷
        .PrintArea = "A1:D20"

    End With
    
    'プリンタ接続をオンにする…⓸
    Application.PrintCommunication = True
    
End Sub

マクロ実行前と実行後のページ設定画面の状態です。
設定後は印刷範囲欄に「A1:D20」がセットされています。

印刷範囲を設定する前と設定後の状態の画像

マクロ実行後の印刷プレビューの画面です。
指定した範囲が印刷範囲に設定されていることが分かります。

ページ設定_印刷プレビュー_20行目までを指定した画像
スポンサーリンク

印刷範囲の指定に変数を使用する方法

印刷範囲の指定に変数を使用する場合は、Rangeの中にCellsで開始・終了の範囲を指定する方法を使用します。最後に「Address」を付けるところがポイントです。

ActiveSheet.PageSetup.PrintArea =Range(Cells(開始行,開始列),Cells(終了行,終了列)).Address

サンプルマクロで実行している内容
①印刷範囲の最大行数を変数にセット(20をセット)
②印刷範囲の最大列数を変数にセット(4をセット)
③プリンタ接続をオフにする
④ページ設定を行う
⑤印刷範囲を設定する:1行目1列目のセル~20行目4列目のセルまでの範囲をセット
⑥プリンタ接続をオンにする

Sub sample1()

Dim MaxRow As Integer
Dim MaxColumn As Integer

    '印刷範囲の最大行数をセット…⓵
    MaxRow = 20
  '印刷範囲の最大列数をセット…⓶
    MaxColumn = 4

    'プリンタ接続をオフにする…⓷
    Application.PrintCommunication = False
    
    'ページ設定を行う…⓸
    With ActiveSheet.PageSetup
        
        '印刷範囲を設定する…⓹
        .PrintArea = ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(MaxRow, MaxColumn)).Address

    End With
    
    'プリンタ接続をオンにする…⓺
    Application.PrintCommunication = True
    
End Sub

この場合も印刷範囲を確認するとA1~D20までがセットされます。

印刷範囲を変数を使用して設定した場合の設定前と設定後の画像
スポンサーリンク

印刷範囲に最終行・最終列を設定する方法

印刷範囲をシートの最終行・最終列を取得して範囲に使用する方法について説明します。

最終行と最終列を取得する方法は別の記事で詳しく説明していますが次のように記述します。

下のサンプル表の場合は2行目にヘッダーがあるため、最終列の取得は2行目を指定しています。
最終列の取得は1列目(A列)の最終列を取得してセットしています。

最終列と最終行の取得方法の画像

‘最終行を取得して変数にセットする(1列目の最終行)
MaxRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).row

‘最終列を取得して変数にセットする(2列目の最終列)
MaxColumn = ActiveSheet.Cells(2, Columns.Count).End(xlToLeft).column

サンプルマクロで実行している内容
①1列目の最終行を取得して変数にセットする
②2行目の最終列を取得して変数にセットする
③プリンタ接続をオフにする
④ページ設定を行う
⑤印刷範囲を設定する:1行目1列目のセル~最終行・最終列のセルまでの範囲をセット
⑥プリンタ接続をオンにする

Sub sample1()

Dim MaxRow As Integer
Dim MaxColumn As Integer

    '最終行を取得して変数にセットする…⓵  ※1列目の最終行をセット
    MaxRow = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).row
    
    '最終列を取得して変数にセットする…⓶  ※2行目の最終列数をセット
    MaxColumn = ActiveSheet.Cells(2, Columns.Count).End(xlToLeft).column

    'プリンタ接続をオフにする…⓷
    Application.PrintCommunication = False
    
    'ページ設定を行う…⓸
    With ActiveSheet.PageSetup
        
        '印刷範囲を設定する…⓹
        .PrintArea = ActiveSheet.Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(MaxRow, MaxColumn)).Address

    End With
    
    'プリンタ接続をオンにする…⓺
    Application.PrintCommunication = True
    
End Sub

マクロ実行前と実行後のページ設定画面の状態です。
設定後は印刷範囲欄に「A1:D51」がセットされています。

ページ設定_最終行と最終列を取得して印刷範囲を指定した場合の設定前と設定後の状態の画像
スポンサーリンク

マクロで印刷範囲の設定をクリアする方法

印刷範囲の設定をクリア(リセット)する方法について説明します。

手動で印刷範囲をクリアする場合は↓のボタンを実行することでクリアされます。

手動で印刷範囲のクリアをするときのボタンの画像

マクロで印刷範囲の設定をクリアしたい場合は「PrintArea」に「””」を指定するか「False」を指定することでクリアされます。

ActiveSheet.PageSetup.PrintArea = “”

ActiveSheet.PageSetup.PrintArea = False

マクロを実行する前と実行後のページ設定画面の変化です。
印刷範囲設定が空になっていることが分かります。

ページ設定_印刷範囲のクリア後の設定画面の画像
スポンサーリンク

※コードのコピー利用について

・コードのコピーは自由におこなっていただけます。
・気を付けて作成はしていますがコードには誤りがある可能性があります。
・自身の環境で動作確認をしていますが、すべての方の環境で同様に動くことは保証できません。
・データの破損等の責任は負いかねますのでご自身の責任のもとお使いください。

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