セルの値が数式エラーの時は自動的にセルを空欄にして印刷するVBA方法

印刷時空白処理VBA

印刷を実行したら表の中に「#DIV/0!」や「#N/A」などのエラー値がそのまま印刷されてしまい見苦しい思いをしたことありませんか?

PageSetupを使ってVBA設定をすれば、印刷する時だけこのエラー値を自動的に空白にしたりダッシュ(-)に表示変更できますよ。

#DIV/0!や#N/Aのエラー値を空欄にする

印刷ページ設定内の標準機能

意外と知られていないのですが、エクセルの印刷ページ設定を開くと「シート」があり、この中に「セルのエラー」という項目があります。

ここのプルダウンから空白やダッシュ(-)に変更することができます。

セルのエラー印刷方法

意外と知られていないのですが、簡単にできますよね。

PageSetupを使ってVBA設定

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

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

エラー表示を空白にして印刷するVBA

Private Sub CommandButton1_Click()
With ActiveSheet
.PageSetup.PrintErrors = xlPrintErrorsBlank
.PrintOut
End With
End Sub

解説
  1. コマンドボタン1がクリックされたら
  2. 表示中のシートのページ設定をする
  3. エラー値セルは空白にする
  4. 印刷する
  5. Withステートメント終了
  6. マクロ記録終了

これで、エラー値の時のセルがあったら自動的に空白セルにして印刷してくれ、空白の代わりにダッシュ(-)や元に戻すVBAコード、さらになぜかエラー表示(#N/A)に表示する4種類が用意されています。

VBAコード内容
0xlPrintErrorsDisplaydエラー値を元に戻す(置換無し)
1xlPrintErrorsBlankエラー値を空白にして印刷
2xlPrintErrorsDashエラー値をダッシュ(-)にして印刷
3xlPrintErrorsNAエラー値を(#N/A)にして印刷

このように印刷ページの設定やVBAでのPageSetupでエラー値を空欄などにできますが、そもそもエクセル関数のIFERRORであらかじめ処理しておくことで回避できるのですが、全てと言う訳にはいかない時もあるので、この方法が便利ですよ。