[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBA印刷でのエラートラップ』(ミカン)
お世話になります。 下記のコードで印刷を行うと、 印刷中です ○/□ ページ のダイアログが出ている状態でキャンセルを押さなくても エラー処理が走ってしまいます。 希望としては、キャンセルを押した時のみエラー処理が走って欲しいのですが… 何が良くないのか教えて頂けないでしょうか。
Sub 印刷() Dim wb_book As Workbook Set wb_book = ThisWorkbook
If MsgBox("入力シートを印刷しますか?", vbQuestion + vbYesNo, "<入力シート>") = vbYes Then '印刷用シートを表示 ThisWorkbook.Worksheets(cnsPrint).Visible = True '印刷設定 With ActiveSheet.PageSetup .TopMargin = 0 '余白上 .LeftMargin = 0 '余白左 .RightMargin = Application.CentimetersToPoints(1) '余白右 .BottomMargin = 0 '余白下 .HeaderMargin = 0 'ヘッダー余白 .FooterMargin = 0 'フッター余白 .CenterHorizontally = False '水平中央寄せ .CenterVertically = True '垂直中央寄せ .Zoom = False '拡大/縮小を指定しない End With On Error GoTo Error2 Sheets(cnsInputSheet).PrintOut Copies:=1 Sheets(cnsPrint).PrintOut Copies:=1 MsgBox "入力シートの印刷が終了しました", , "入力シート印刷" '印刷用シートを非表示 ThisWorkbook.Worksheets(cnsPrint).Visible = False End If Error2: MsgBox "入力シートの印刷をキャンセルしました" 'オブジェクトの解放 Set wb_book = Nothing End Sub
Excel2002 XP
自己解決しました。 下記のように書き換えました。
Sub 入力シート印刷() Dim b_ErrFlg As Boolean★
'エラーフラグ初期化 b_ErrFlg = True★
'印刷用シートを表示 ThisWorkbook.Worksheets(cnsPrint).Visible = True
'印刷設定 With ActiveSheet.PageSetup .TopMargin = 0 '余白上 (1=約0.0176mm) .LeftMargin = 0 '余白左 .RightMargin = Application.CentimetersToPoints(1) '余白右 .BottomMargin = 0 '余白下 .HeaderMargin = 0 'ヘッダー余白 .FooterMargin = 0 'フッター余白 .CenterHorizontally = False '水平中央寄せ .CenterVertically = True '垂直中央寄せ .Zoom = False '拡大/縮小を指定しない End With
On Error GoTo Error★ Sheets(cnsInputSheet).PrintOut Copies:=1 Sheets(cnsPrint).PrintOut Copies:=1 MsgBox "入力シートの印刷が終了しました", , "入力シート印刷" 'エラーフラグ(回避)★ b_ErrFlg = False★ Error:★ If b_ErrFlg = True Then★ MsgBox "印刷をキャンセルしました", vbInformation + vbOKOnly, "入力シート印刷"★ End If★ '印刷用シートを非表示 ThisWorkbook.Worksheets(cnsPrint).Visible = False End Sub
★の部分が変更した箇所です。 どなたかの参考になればと思います。 ミカン Excel2002 XP
Sheets(cnsInputSheet).PrintOut Copies:=1 Sheets(cnsPrint).PrintOut Copies:=1 MsgBox "入力シートの印刷が終了しました", , "入力シート印刷" 'エラーフラグ(回避)★ exit sub ’とここでプロシジャーを抜けます。 'エラートラップセクションには、普通は、トラップが 'が発生したときだけ入るようにします けどねえ b_ErrFlg = False★ Error:★ If b_ErrFlg = True Then★ MsgBox "印刷をキャンセルしました", vbInformation + vbOKOnly, "入力シート印刷"★ End If★ '印刷用シートを非表示 ThisWorkbook.Worksheets(cnsPrint).Visible = False End Sub
ichinose
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.