エクセル作成資料印刷時に入力漏れをVBAを使い自動チェックする方法

印刷中止処理VBA

見積書や請求書などで宛名入力漏れがあるのに気づかずに印刷してしまって失敗した経験はありませんか?

うっかりミスは誰でもあるので、もし入力漏れがあったら自動的に見つけて印刷をストップする機能を、付け加えれば解決しますよ。

印刷処理機能にキャンセル機能を追加

当たり前ですが、印刷ボタンを押すと印刷しますので、印刷ボタンを押した後に中止することはできません。

その為に、印刷ボタンを押したら入力漏れをチェックしてから印刷するように、VBAコードを付け加えます。

もし~だったらとメッセージのVBA組み合わせ

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

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

宛名が空欄だたら印刷中止するVBA

Private Sub CommandButton1_Click()
If Range(“A4”).Value = “” Then
MsgBox “宛名が入力漏れです”
Cancel = True
End If
ActiveSheet.PrintOut
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. もしセルA4が空欄だったら
  3. 「宛名が入力漏れです」とメッセージを表示
  4. キャンセルを実行する
  5. Ifステートメント終了
  6. 表示中のシートを印刷する
  7. マクロ記録終了

これで宛名が入力されていなかったら、メッセージを表示して知らせて印刷も中止できるようになります。

もちろん宛名以外にも入力漏れをチェックしたいならば、下記のVBAコードに入れ替えれば対応でき、2か所どちらかが空欄だったら印刷中止できます。

If Range(“A4”).Value = “” Or Range(“A6”).Value = “” Then

This WorkbookにVBAコードを書き込む

上記のように、ユーザーフォームのコマンドボタンに印刷中止コードを書き込むのではなく、エクセルファイル自体にVBAコードを記録してしまう方法もあり、この場合はシートを選びませんので全てのシートが対象になります。

また操作方法もコマンドボタンではなく、ワークシート上のファイル➡印刷の通常の手順になります。

This WorkbookにVBAコードを記載

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If Range(“A4”).Value = “” Then
MsgBox “宛名が入力漏れです”
Cancel = True
End If
End Sub

この場合はVBA画面で、この3か所を選択すれば簡単に書き込むことができます。

This Workbook

どちらでもやれることは一緒なのでお好きな方法で入力漏れチェックしてくださいね。

せっかくVBAを使うならば、シートごとに用紙サイズや向きなどを一緒に設定できる、コマンドボタンの方法を使うことが個人的には多いですよ。