印刷範囲の登録や選択中セルを印刷範囲に設定するエクセルVBA

印刷範囲指定VBA

エクセルで印刷した時に、範囲指定を忘れたり、設定したはずなのになぜかはみ出てしまったりした経験ありませんか?

共有プリンターや共有パソコンでは最後に使った人がどんな設定をしたか不明なので、よくある事ですよね。

そんな失敗や紙の無駄をしないように、VBAを使って印刷範囲を登録しておけば、設定が変わっていても登録通りの印刷範囲に修正して印刷しますよ!

印刷範囲(PrintArea)設定する

ここでは、ユーザーフォームに配置したコマンドボタンにVBAコードを書き、表示中のシートのページ設定(ActiveSheet)で記載しています。

シートを指定する場合はActiveSheetWorkSheets(“シート名”)に変えるだけです。

印刷範囲が毎回同じならば範囲登録する

請求書や納品書または成績表など、毎回印刷範囲が変わる事は滅多にありませんので、同じ範囲を印刷するならば、PrintAreaプロパティを使って印刷範囲を登録しておくと失敗しませんね。

印刷範囲を登録するVBA

Private Sub CommandButton1_Click()
With ActiveSheet
.PageSetup.PrintArea = “A1:G23”
.PrintPreview
End With
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. 表示中のシートのページ設定をする
  3. 印刷範囲はセルA1~セルG23の範囲とする
  4. 印刷プレビューを表示する
  5. Withステートメント終了
  6. マクロ記録終了

これで、コマンドボタンをクリックするとA1:G23の範囲だけを印刷範囲として、印刷プレビューが表示されます。

印刷プレビューが必要なくそのまま印刷をするならば、.PrintPreviewを.PrintOutに変更するだけです。

マウスで選択中の範囲を印刷する範囲にして印刷する

次に、印刷範囲が毎回決まっていなくて、選択中の範囲を印刷範囲にすることもできます。

選択中の範囲を印刷範囲指定

Private Sub CommandButton1_Click()
With ActiveSheet
.PageSetup.PrintArea = Selection.Address
.PrintPreview
End With
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. 表示中のシートのページ設定をする
  3. 選択中の範囲を印刷範囲とする
  4. 印刷プレビューを表示する
  5. Withステートメント終了
  6. マクロ記録終了

印刷範囲が決まっていれば、範囲だけではなくて余白や用紙サイズ・向きなども一緒に設定しておくとより失敗しない印刷ができますので、おススメです。