エクセルで作成した資料など印刷した後に入力漏れを見つけてしまって、やり直した経験ありませんか?
見積書や請求書などで宛名入力忘れなど失敗したくないので、印刷実行したら自動的に入力漏れをチェックして見つけたら印刷ストップする機能をVBAを使って付け加えましょう。
印刷処理機能にキャンセル機能を追加する
当たり前ですが、印刷ボタンを押すと印刷しますので、印刷ボタンを押した後に中止することはできません。
その為に、印刷ボタンを押したら入力漏れをチェックしてから印刷するように、VBAコードを付け加えます。

もし~だったらとメッセージのVBA組み合わせ
ここでは、ユーザーフォームに配置したコマンドボタンにVBAコードを書き、表示中のシートのページ設定(ActiveSheet)で記載しています。
シートを指定する場合はActiveSheetをWorkSheets(“シート名”)に変えるだけです。
Private Sub CommandButton1_Click()
If Range(“A4”).Value = “” Then
MsgBox “宛名が入力漏れです”
Cancel = True
End If
ActiveSheet.PrintOut
End Sub
- コマンドボタン1がクリックされたら
- もしセルA4が空欄だったら
- 「宛名が入力漏れです」とメッセージを表示
- キャンセルを実行する
- Ifステートメント終了
- 表示中のシートを印刷する
- マクロ記録終了
これで宛名が入力されていなかったら、メッセージを表示して知らせて印刷も中止できるようになります。
もちろん宛名以外にも入力漏れをチェックしたいならば、
If Range(“A4”).Value = “” Or Range(“A6”).Value = “” Then
とすれば、2か所どちらかが空欄だったらということもできます。
This WorkbookにVBAコードを書き込む
いつものようにユーザーフォームのコマンドボタンではなく、エクセルファイル自体にVBAコードを記録してしまう方法もあり、この場合はシートを選びませんので全てのシートが対象になります。
また操作方法もコマンドボタンではなく、ワークシート上のファイル➡印刷の通常の手順になります。
Private Sub Workbook_BeforePrint(Cancel As Boolean)
If Range(“A4”).Value = “” Then
MsgBox “宛名が入力漏れです”
Cancel = True
End If
End Sub
この場合はVBA画面で、この3か所を選択すれば簡単に書き込むことができます。

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