エクセルで作成した資料など印刷した後に入力漏れを見つけてしまって、やり直した経験ありませんか?
見積書や請求書などで宛名入力忘れなど失敗したくないので、印刷実行したら自動的に入力漏れをチェックして見つけたら印刷ストップする機能をVBAを使って付け加えましょう。
印刷処理機能にキャンセル機能を追加する
当たり前ですが、印刷ボタンを押すと印刷しますので、印刷ボタンを押した後に中止することはできません。
その為に、印刷ボタンを押したら入力漏れをチェックしてから印刷するように、VBAコードを付け加えます。
![](https://tripbowl.com/excel-vba/wp-content/uploads/2020/10/54fd9a85284bdd2aa408deb36c574c4a.jpg)
もし~だったらとメッセージの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か所を選択すれば簡単に書き込むことができます。
![This Workbook](https://tripbowl.com/excel-vba/wp-content/uploads/2020/10/ae1eb85076918ebab0f0f95d48228677-1024x169.jpg)
どちらでもやれることは一緒なのでお好きな方法で入力漏れチェックしてくださいね。
せっかくVBAを使うならば、シートごとに用紙サイズや向きなどを一緒に設定できる、コマンドボタンの方法を使うことが個人的には多いですよ。