印刷する前に処理を実行する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

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

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

印刷直前にヘッダーとフッターを設定する
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

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