大量に印刷が行われる場合に、途中で印刷内容の誤りや変更が発生したら、
強制的に印刷を中止したい、ということが有り得ます。
そのようなときは、発生したイベントがオペレーティングシステムによって処理
されるように、プログラムで占有していた制御をオペレーティングシステムに渡す
フロー制御関数のDoEvents関数を使います。
サンプルでは、印刷を100回繰り返す処理で、[キャンセル]ボタンがクリックされ
たらループ処理から強制的に抜け出します。このように[キャンセル]ボタンを
作成しておくこと便利です。
まず、フォームに2つのコマンドボタンを配置しています。
コマンドボタン「CommandButton1」は、印刷を実行するボタン。コマンドボタン
「CommandButton2」は、[キャンセル]ボタンです。
変数「Can_flg」は、モジュールレベルで宣言しています。
Dim Can_flg As Boolean
'印刷実行用のボタン
Private Sub CommandButton1_Click()
Dim i As Integer
Can_flg = False
For i = 1 To 100
ActiveWindow.SelectedSheets.PrintOut From:=1, To:=1, Copies:=1
DoEvents
If Can_flg = True Then
Exit For
End If
Next i
End Sub
'キャンセル用のボタン
Private Sub CommandButton2_Click()
Can_flg = True
End Sub
|