印刷中に強制的に印刷を中止する
 大量に印刷が行われる場合に、途中で印刷内容の誤りや変更が発生したら、
強制的に印刷を中止したい、ということが有り得ます。

 そのようなときは、発生したイベントがオペレーティングシステムによって処理
されるように、プログラムで占有していた制御をオペレーティングシステムに渡す
フロー制御関数の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

Excel97



戻る


Excel Word Access VBA! モーグ