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

Excel-VBA 印刷

当たり前ですがエクセルを使う上で、セルに数式などが入っていて計算させていますが、#DIV/0!や#N/Aなどのエラー値がそのまま印刷されてしまい見苦しい思いをしたことありませんか?

印刷する時だけ、このエラー値を自動的に空白にしたりダッシュ(-)にVBAコードで置き換えられます。

スポンサーリンク

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

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

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

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

セルのエラー印刷方法

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

PageSetupを使ってVBA設定

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

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

セルのエラー印刷表示設定

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

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

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

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

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

印刷関連VBA
印刷
スポンサーリンク
参考になりましたらシェア宜しくお願い致します
Excel VBA