エクセルで印刷した時に、範囲指定を忘れたり、設定したはずなのになぜかはみ出てしまったりした経験ありませんか?
共有プリンターや共有パソコンでは最後に使った人がどんな設定をしたか不明なので、よくある事ですよね。
そんな失敗や紙の無駄をしないように、VBAを使って印刷範囲を登録しておけば、設定が変わっていても登録通りの印刷範囲に修正して印刷しますよ!
印刷範囲(PrintArea)設定する
ここでは、ユーザーフォームに配置したコマンドボタンにVBAコードを書き、表示中のシートのページ設定(ActiveSheet)で記載しています。
シートを指定する場合はActiveSheetをWorkSheets(“シート名”)に変えるだけです。
印刷範囲が毎回同じならば範囲登録する
請求書や納品書または成績表など、毎回印刷範囲が変わる事は滅多にありませんので、同じ範囲を印刷するならば、PrintAreaプロパティを使って印刷範囲を登録しておくと失敗しませんね。
Private Sub CommandButton1_Click()
With ActiveSheet
.PageSetup.PrintArea = “A1:G23”
.PrintPreview
End With
End Sub
- コマンドボタン1がクリックされたら
- 表示中のシートのページ設定をする
- 印刷範囲はセルA1~セルG23の範囲とする
- 印刷プレビューを表示する
- Withステートメント終了
- マクロ記録終了
これで、コマンドボタンをクリックするとA1:G23の範囲だけを印刷範囲として、印刷プレビューが表示されます。
印刷プレビューが必要なくそのまま印刷をするならば、.PrintPreviewを.PrintOutに変更するだけです。
マウスで選択中の範囲を印刷する範囲にして印刷する
次に、印刷範囲が毎回決まっていなくて、選択中の範囲を印刷範囲にすることもできます。
Private Sub CommandButton1_Click()
With ActiveSheet
.PageSetup.PrintArea = Selection.Address
.PrintPreview
End With
End Sub
- コマンドボタン1がクリックされたら
- 表示中のシートのページ設定をする
- 選択中の範囲を印刷範囲とする
- 印刷プレビューを表示する
- Withステートメント終了
- マクロ記録終了
決まっている範囲の時(A1:G23)としていた部分が、選択中の範囲(Selection.Address)に変えただけです。

印刷範囲が決まっていれば、範囲だけではなくて余白や用紙サイズ・向きなども一緒に設定しておくとより失敗しない印刷ができますので、おススメですよ。
印刷関連VBA
- エクセルからエクセルへ差し込み印刷
- 印刷プレビュー
- 枚数指定して印刷実行
- セル番地の値を取得して開始・終了ページ設定
- プリンター選択・設定
- 印刷範囲指定・選択中範囲印刷
- 用紙の向きを指定する
- 用紙サイズを指定する
- 印刷倍率を指定する
- 印刷倍率を自動調整に設定して1ページ内に収めて印刷
- インク・トナー節約設定
- ページ設定で上下左右の余白を指定する
- ヘッダーとフッターを指定する
- フッターの開始ページ数指定と総ページ数表示
- ヘッダー2行表示や日時表示
- 数式エラーを自動的に空白にして印刷する
- 入力漏れがあったら印刷を自動停止する