印刷する前に処理を実行するBeforePrintイベント

印刷する前に処理を実行するBeforePrintイベント
印刷する前に処理を実行するBeforePrintイベント

イベントマクロ 15回

Workbook.BeforePrint イベント

ブックまたはその中に含まれる内容を印刷する前に発生します。


BeforePrintの構文
 Private Sub Workbook_BeforePrint(Cancel As Boolean)

引数名 データ型 説明
Cancel Boolean イベントが発生すると、 False が渡されます。 イベント プロシージャでこの引数に True を設定すると、プロシージャが終了してもブックは印刷されません。
Private Sub Workbook_BeforePrint(Cancel As Boolean) 
	’処理したい内容をここに記述
End Sub

見出し3

1. 次のコードでは、印刷される前に、作業中のブックのすべてのワークシートを再計算します。
変数wsを宣言しています。

Private Sub Workbook_BeforePrint(Cancel As Boolean)
Dim ws As Worksheet
    For Each ws In Worksheets
    ws.Calculate
    Next
End Sub

印刷する前に処理を実行するBeforePrintイベント-1

2. こちらは、印刷したPDFファイルですが、内容が違っています。数式のRand関数が再計算されたのです。


印刷する前に処理を実行するBeforePrintイベント-2

3. シート1を見ると、印刷直前に再計算されているので、数値が代わっています。


印刷する前に処理を実行するBeforePrintイベント-3

印刷直前にヘッダーとフッターを設定する

4. 印刷のたびにヘッダー、フッターを設定するのは面倒です。このコードでは直前に指定した書式でヘッダーを設定するようにします。
左と中央、そして右の3つのヘッダーを設定しましょう。
中央のヘッダーCenterHeaderは、和暦で表記することにします。

Private Sub Workbook_BeforePrint(Cancel As Boolean)
    With ActiveSheet.PageSetup
        .LeftHeader = Format(Date, "yyyy年m月d日")
        .CenterHeader = Format(Date, "ggge年m月d日")
        .RightHeader = Format(Now, "h時m分")
    End With
End Sub


印刷する前に処理を実行するBeforePrintイベント-4

いかがでしょうか、Workbook.BeforePrint イベントは、工夫しだいでとても便利につかえそうなイベントですね。次回はシートが挿入されたときに実行するNewSheetイベントをご紹介します

こちらもおすすめ