HOME > 即効テクニック > Excel VBA > その他関連のテクニック > 印刷中に強制的に印刷を中止する

即効テクニック

その他関連のテクニック

印刷中に強制的に印刷を中止する

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