ブックを印刷する時に発生するイベントプロシージャは「Workbook_BeforePrint」を使います。
構文
構文は以下の通りです。
' 実行するコードをここに記述する
End Sub
解説
Workbook_BeforePrintイベントプロシージャは、ブックを印刷する時に実行されます。引数としてCancel As Booleanを受け取ります。Cancel引数は、印刷をキャンセルするかどうかを指定するための変数です。この変数をTrueに設定すると、印刷がキャンセルされます。
使い方
例えば、印刷前にデータの整形を行いたい場合、以下のようにコードを記述します。
' データの整形処理を行う
Sheets("Sheet1").Range("A1:B10").AutoFit
End Sub
上記の例では、印刷前にSheet1のA1からB10までの範囲の列幅を自動調整する処理を行っています。AutoFitメソッドは、選択した範囲の列幅を自動的に調整するためのメソッドです。
また、印刷前にメッセージを表示したい場合は、以下のようにコードを記述します。
' メッセージを表示する
MsgBox "印刷しますか?", vbQuestion + vbYesNo, "印刷確認"
' もし「いいえ」が選択された場合は印刷をキャンセルする
If MsgBoxResult = vbNo Then
Cancel = True
End If
End Sub
上記の例では、印刷前にメッセージボックスを表示し、「印刷しますか?」という質問を表示しています。質問に対して「はい」または「いいえ」で回答することができます。もし「いいえ」が選択された場合、Cancel変数をTrueに設定することで印刷をキャンセルします。
プログラミング例
以下に、Workbook_BeforePrintイベントプロシージャの一例を示します。この例では、印刷前にシート内の特定のセルの値が特定の条件を満たしているかをチェックし、満たしていない場合は印刷をキャンセルします。
Dim rng As Range
Dim cell As Range
' チェックするセル範囲を指定する
Set rng = Sheets("Sheet1").Range("A1:A10")
' 条件をチェックする
For Each cell In rng
If cell.Value < 0 Then
' 条件を満たさないセルがあった場合は印刷をキャンセルする
Cancel = True
MsgBox "条件を満たしていないセルがあります。キャンセルします。", vbCritical, "エラー"
Exit Sub
End If
Next cell
End Sub
上記の例では、Sheet1のA1からA10までの範囲のセルの値が0未満の場合、印刷をキャンセルしてエラーメッセージを表示します。
まとめ
Workbook_BeforePrintイベントプロシージャは、印刷前に特定の処理を自動化するための強力なツールです。データの整形やチェック、メッセージの表示など、印刷に関連する作業をスムーズに行うことができます。