エクセルVBAで未入力データがあるかどうか確認してから印刷する方法

エクセル検索
HOMEUserForm印刷画面ファイル図形
日付・時刻データセル関数VBA関数

エクセルで表や請求書などを印刷する時に、必要なデータが未入力のままで気づかずに印刷してしまったことありませんか?

紙の無駄になるので印刷する前に自動的に請求書などの宛名などが、未入力の場合に自動的に印刷を中止させる方法をご紹介いたします。

指定したセルが空欄の時に印刷中止するVBA

この方法はいくつかVBAコードがありますが、普段使用しているVBAコード2つあり一つ目は、If~Elseを使う方法、二つ目はBeforePrintをご紹介します。

If~Else

この方法は、ユーザーフォームに配置したコマンドボタンにセルA2が空欄の時に印刷を中止するVBAコードを記述しています。

エクセルファイル全体ではなく、個別に設定するにはこの方法をおススメし、私自身もこの方法を主に使っています。

宛名入力の部分は「セルA2」とします。

VBAコード

Private Sub CommandButton1_Click()
If Range(“A2”).Value = “” Then
MsgBox “宛名が入力されていません”
Else
ActiveWindow.SelectedSheets.PrintOut FROM:=1, To:=1, COPIES:=1, COLLATE _
:=True
End If
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. もしセルA2が空欄だったら
  3. 「宛名が入力されていません」とメッセージを表示する
  4. そうでなかったら(空欄ではない場合)
  5. 表示しているシートを1ページ目~1ページ目までを1部印刷する
  6. Ifステートメント終了
  7. マクロ記録終了

BeforePrintを使う方法

この方法は、エクセルファイル自体に書き込む方法で、 セルA2が空欄の時に印刷を中止するVBAコードを記述していますが、このVBAコードを書き込む場所はThisWorkBookですよ! 

VBAコード

Private Sub Workbook_BeforePrint(Cancel As Boolean)
If Range(“A2”).Value = “” Then
MsgBox “宛名が入力されていません”
Cancel = True
End If
End Sub

解説
  1. エクセルファイルに含まれる内容を印刷する前に行う
  2. もし、セルA2が空欄だったら
  3. メッセージで「宛名が入力されてません」と表示
  4. 印刷中止を実行する(印刷しない)
  5. IFステートメント終了
  6. マクロ記録終了
波乗りアヒル

ただこの方法、先ほどもお話ししたように私自身もう使っていません。

BeforePrint を使っていない理由は、このVBAコードだけでは見ての通り、印刷するVBAコードPrintメソッドは書いていませんので、当然ながら印刷をすることはできません。

別途印刷を指示するVBAコードを記述する必要があります。また、A2以外の場所を更に指定したい時には対応できないからです。

波乗りアヒル

やはりマクロを記録するならば、しっかりとセルを指定した方が、エラーになる事が無いのでIFステートメントの方が安心ですよ。

関連記事

どこかにビューーン
ちょっとの工夫で往復無料の時代が来た!!

新着ページ

よく見られているページ

大容量無料ファイル転送サービス【ACデータ】 無料イラスト【イラストAC】

紅葉スポット

2024年5月11日からマイルと楽天ポイントとの相互交換提携開始!

交換レート0.5:1なので半分になってしまいますが、使い方次第で実質3倍の価値まで引き上げられる方法です。