すぐに役立つエクセルVBAマクロ集 すぐマク
すぐに役立つ Excel VBA マクロ集 Excel VBA Macro
FAQ
Google
 
Home |  What's New! |  Gallery |  Introduction |  Service |  Profile 500連発・組み方講座フォロー Big Color Pallet
[広告]
Excel VBA Macro
Excel DownLoad
© 1997 - 2007
永井善王.
All RightsReserved.
HappyTech & Co., Ltd.
www.happy500z.com
Excel VBA Macro ・ フロー制御 ・ FAQ
タイマー設定をキャンセルするには?
Question 59.6 Previous Next
500連発第2弾012番の時間起動のマクロとHPを参考にさせていただいて、下記のようなマクロで30分おきに起動するものを作成しました。
詳細は こちら
'-----------------------------------------------------------------------------------------
    指定時刻 = TimeValue("09:00:00")
    待ち時間 = TimeValue("00:00:05")  '他のプロシージャが実行中の場合の待ち時間
    For i = 1 To 30
    指定時刻 = 指定時刻 + TimeValue("00:30:00")  '現在時刻より何分後
      Application.OnTime _
         TimeValue(指定時刻), _
         procNM, _
         TimeValue(待ち時間)
    Next i
'-----------------------------------------------------------------------------------------
起動自体はうまくいったのですが、逆に、そのブックを閉じ(Exceを終了することなく)、他のブックを開いて表作成など一般的な作業を行なっていると、指定時刻になると閉じたはずのブックが開き、マクロが実行されてしまいます。

上記のマクロでは、9:00から30分おきに起動させる設定にしており、たとえば、15:00にそのブックを閉じても、15:30になると自動的にそのブックが開いてマクロが実行されてしまいます。これを回避する方法、キャンセルする方法はないでしょうか。
お忙しいところ、申し訳ありませんが、宜しくお願いいたします。
Answer   Copyright (C) 2003.4.10 永井善王
500連発第2弾012番は「現在より一定時間後にマクロを実行する」というサンプルですが、実務に活かしていただいているご様子、うれしいです。
タイマー設定をキャンセルするには、OnTimeメソッドの 4番目の引数 (Schedule) に Falseを設定するコードを実行します。ご提示のコードに当てはめると下記のようになります。

    Application.OnTime TimeValue(指定時刻), procNM, , False

このコードを、設定したときと同様に For...Next で30回ループさせればキャンセルできるかと思います。なお、ブックを閉じたときにキャンセルするようにしたいのであれば、Auto_Closeプロシージャに組み入れればよいでしょう。
さっそくお試しいただき、お手数ですが結果をお知らせください。

お知らせ
これらのマクロのくわしい組み方を知りたい場合は、拙著の書籍 「Excel VBA マクロ組み方講座」 をご覧ください。全国書店にて 2003年5月末ころ技術評論社より発売予定です。
Click here to visit our sponsor