[[20170111202731]] 『マクロ動作を途中で止めたい』(ちぃさん) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『マクロ動作を途中で止めたい』(ちぃさん)

いつもお世話になります。

今回、私が前回質問した内容とは違いますが

[[20081013114718]] で記述してあるマクロ内容が使いたく挑戦しているのですが躓き、先に進めません。

どうかお助けいただけないでしょうか。

Ctr+P などで印刷をする際に条件と一致すれば印刷処理を停止し、一致しなければ印刷を続行し印刷後の処理をしたいです。

Private Sub Workbook_BeforePrint(Cancel As Boolean)

If Sheets("Sheet1").Range("E1") = 0 Then Cancel = True: Exit Sub
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    '条件と等しければイベント停止

    Application.OnTime Now(), "ThisWorkbook.AfterPrint"
 End Sub
 '===============================================================================
 Sub AfterPrint()
    ActiveSheet.Range("a1").Value = "印刷完了"
 'ここに印刷後の処理コードを記述

 Dim a

Application.EnableEvents = False
Application.DisplayAlerts = False

   Sheets("Sheet1").Activate

   a = Range("G65536").End(xlUp).Row

    Range("G" & a + 1) = Now()

ActiveWorkbook.Close SaveChanges:=True

 End Sub

バージョン2010では問題ないのですが2007になると印刷ダイアログが表示されずプリンターを選択できません。

何故でしょうか?

If Sheets("Sheet1").Range("E1") = 0 Then Cancel = True: Exit Sub
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

やはりこの部分がダメなのでしょうか。

どうか宜しくお願いいたします。

< 使用 Excel:Excel2010、使用 OS:Windows7 >


 If Sheets("Sheet1").Range("E1") = 0 Then Cancel = True: Exit Sub
 これを
  If Sheets("Sheet1").Range("E1") = 0 Then 
    Cancel = True
  Else
 として

     Application.OnTime Now(), "ThisWorkbook.AfterPrint"
 End Sub
 これを
     Application.OnTime Now(), "ThisWorkbook.AfterPrint"
   End If
 End Sub
 にして見て下さい

 要件とは別ですが
 a = Range("G65536").End(xlUp).Row
 この665536はexcel2003までの最大行数で2007から変わっています
 (そこまでの行数は使っていないのであれば問題はありませんが。。。)
  a = Range("G" & Rows.Count).End(xlUp).Row
 と、しておきましょう

(ぽんた) 2017/01/12(木) 00:31


(ぽんた)さん ありがとうございます。

試してみます。
(ちぃさん) 2017/01/12(木) 11:09


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.