【VBA入門】印刷範囲の設定方法・セル選択で直接指定する方法とは

こんにちは、フリーランスエンジニア兼ライターのワキザカ サンシロウです。

皆さんは、VBAで印刷範囲を設定する方法を知っていますか?

Excelのデータを印刷するとき、印刷範囲を指定して印刷するケースはよくありますよね。

そこで今回は、

・VBAで印刷範囲を指定する2つの方法

といった基礎的なことから、

・印刷範囲を固定値で指定するサンプルコード

・印刷範囲をセル選択で直接指定するサンプルコード

・合わせて覚えると便利なPrintOutメソッドの使い方

といった応用的な方法まで、徹底的に解説します!

印刷範囲の設定方法

VBAで印刷方法を設定する方法は、大きく分けて2つあります。

  • 印刷時に範囲を指定して印刷
  • 印刷範囲を事前に設定してから印刷

それぞれ使い方を解説しますね。

印刷時に範囲を指定して印刷

まず、印刷時に範囲を指定して印刷する方法について解説します。

VBAで印刷する場合はPrintOutメソッド、印刷プレビューをする場合はPrintPreviewメソッドを使うのですが、メソッドを実行するオブジェクトの指定で印刷範囲を指定することができます。

印刷範囲を指定する方法:

Range(印刷範囲).PrintOut       '印刷
Range(印刷範囲).PrintPreview   '印刷プレビュー

印刷範囲は「A1:B5」のようにセル範囲を指定します。

このように、範囲を指定して印刷・印刷プレビューをすることができます。

印刷範囲を事前に設定してから印刷

次に、事前に印刷範囲を設定する方法について解説します。

印刷範囲は、次のように設定することができます。

WorkSheet.PageSetup.PrintArea = 印刷範囲

こちらも印刷範囲には、「A1:B5」のようにセル範囲を指定します。

事前に設定しておけば、次のように印刷時に自動で印刷範囲に指定した個所のみ印刷することができます。

With ActiveSheet
    .PageSetup.PrintArea = "A1:A5"  '印刷範囲を設定
    .PrintPreview                   '印刷プレビュー
    .PageSetup.PrintArea = ""       '印刷範囲をクリア
End With

この例では、印刷範囲を「A1:A5」に変更してから、印刷プレビューをしています。

また、印刷範囲が設定後残ってしまうと次の印刷時に影響が出るので、最後にクリアする処理も入れています。

このように、簡単に印刷範囲を設定して印刷することができます。

設定した印刷範囲を取得する方法

VBAから印刷範囲を設定する場合は先ほど説明した2つの方法で良いのですが、事前に設定している印刷範囲で印刷したいケースもありますよね。

ただ、目視だと印刷範囲がわかりづらいためVBAから印刷範囲を取得する方法を知っておくと便利です!

印刷範囲の取得方法は次のとおりです。

印刷範囲の取得方法:

WorkSheet.PageSetup.PrintArea

印刷範囲を設定するときと同じメソッドなので、覚えやすいですね。

サンプルコード

次に、サンプルコードをもとに、具体的な使い方を解説します。

印刷範囲を固定値で設定

まずは、印刷範囲を固定値で設定する方法です。

セルのデータ:

サンプルコード:

Sub Test1()

    Dim strCellArea As String
    strCellArea = "A1:C6"
      
    '選択したセル範囲で印刷プレビュー実施
    With ActiveSheet
        .PageSetup.PrintArea = strCellArea '印刷範囲を設定
        .PrintPreview
        .PageSetup.PrintArea = ""          '印刷範囲をクリア
    End With

End Sub

実行結果:

A1~C6までのデータのみ印刷プレビューに表示されていますよね。

このように、簡単にセル範囲を指定して印刷することができます。

事前に印刷範囲が決まっている場合は、この方法がおすすめです!

InputBoxから選択したセル範囲を印刷

次は、印刷するときにセル範囲を指定する方法です。

サンプルコード:

Sub Test2()
On Error Resume Next

    Dim strPrintMessage As String
    strPrintMessage = "印刷範囲をマウスで選択してください"

    'InputBoxでセル入力後、OKでセル範囲を格納
    Dim inputCell As Range
    Set inputCell = Application.InputBox(Prompt:=strPrintMessage, Type:=8)

    'InputBoxでキャンセルが押されたときは、処理を抜ける
    If inputCell Is Nothing Then
      Exit Sub
    End If

    '選択したセル範囲で印刷プレビュー実施
    With ActiveSheet
        .PageSetup.PrintArea = inputCell.Address '印刷範囲を設定
        .PrintPreview
        .PageSetup.PrintArea = ""                '印刷範囲をクリア
    End With

End Sub

実行直後のセル選択ウィンドウ:

OKボタンクリック後の印刷プレビュー画面:

セル選択範囲を入力するためにInputBoxで入力画面を用意し、選択した値を使って印刷プレビューをするサンプルです。

キャンセルボタンをクリックされることを考慮し、処理の冒頭で「On Error Resume Next」 を書くことでInputBoxに値が入っていない場合もエラーにならないようにしています。

また、値が入っていないと印刷プレビューはできないため、「If inputCell Is Nothing Then」で変数inputCellに値が入っていない場合(キャンセルをクリックした場合)に処理が終了するように書いています。

InputBoxの詳しい使い方、「On Error Resume Next」を含むエラー処理の詳しい使い方については以下で詳しく解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】入力ダイアログを作るためのInputBoxの使い方とは
更新日 : 2018年8月2日
【VBA入門】エラーを処理する方法(On Error、Resume、GoTo)
更新日 : 2019年4月21日

合わせて覚えると便利なPrintOutメソッドの使い方

今回は印刷範囲の設定方法に特化して解説してきましたが、合わせて印刷方法について覚えておくと便利です。

PrintOutメソッド(印刷)、PrintPreviewメソッド(印刷プレビュー)はページ数を指定したり、ページの印刷範囲を指定することもできます。

以下で詳しく解説しているので、気になる方は見てみてくださいね!

【ExcelVBA入門】PrintOutを使った印刷方法について徹底解説!
更新日 : 2019年7月9日

まとめ

今回は、VBAで印刷範囲を設定・クリアする方法について解説しました!

データやグラフを扱うことの多いExcelだからこそ、印刷するケースは多いです。

今回解説した方法はどれも簡単なので、ぜひ使ってみてくださいね!

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

Sanshiro Wakizaka

北海道出身の30歳で、フリーランスエンジニア兼テックライターとして活動中。新卒入社したメーカー系のIT企業で、システムエンジニアとして約5年勤務。

Webアプリ、業務アプリ開発において、要件定義 ~ 運用保守まで様々な経験あり。また3歳の娘がいる1児のパパで、日々娘との時間を確保するために仕事を頑張っています!

侍エンジニアでは、【誰でもわかるレベルのわかりやすさ】を意識して、記事を執筆中。

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー