即効テクニック |
大量に印刷が行われる場合に、途中で印刷内容の誤りや変更が発生したら、強制的に印刷を中止したい、ということが有り得ます。 そのようなときは、発生したイベントがオペレーティングシステムによって処理されるように、プログラムで占有していた制御をオペレーティングシステムに渡すフロー制御関数の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