• ベストアンサー

ExcelVBAで、タイマー割り込みって使える?

エクセルのVBAでインターバルタイマーによる定期的なマクロの起動を考えていますが、エクセルにはそのようなコマンドが見当たりません。 ループ処理をしても実現は可能だと思いますが、CPUの独占状態となると思うのですが、Accessのタイマー割り込みみたいなのってエクセルでは実現できないのでしょうか?よろしくお願いいたします

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

Sub 指定時刻にマクロを実行する() 指定時刻 = TimeValue("HH:MM:SS") '指定時刻 ※1 待ち時間 = TimeValue("HH:MM:SS") '指定時刻に他プロシージャが実行中の場合の待ち時間 ※2 Application.OnTime TimeValue(指定時刻), _ "指定時刻に実行するマクロ名", _ TimeValue(待ち時間) End Sub Sub 指定時刻に実行するマクロ名() ' 'ここへマクロを記入 End Sub '--------------------------------------------------------------- Sub 現在より一定時間後にマクロを実行する() 指定時刻 = Now + TimeValue("HH:MM:SS") '現在時刻より何分後 ※2 待ち時間 = TimeValue("HH:MM:SS") '指定時刻に他プロシージャが実行中の場合の待ち時間 ※2 Application.OnTime TimeValue(指定時刻), _ "一定時間後に実行するマクロ名", _ TimeValue(待ち時間) End Sub Sub 一定時間後に実行するマクロ名() ' 'ここへマクロを記入 End Sub '--------------------------------------------------------------- Sub 実行中のマクロを指定時刻まで一時中断して再開する() 指定時刻 = Now + TimeValue("HH:MM:SS") '現在時刻より何分後 ※2 Application.Wait (指定時刻) 'マクロ実行を指定時刻まで中断する ' 'ここへ再開後に処理するマクロを記入 End Sub '=============================================================== '<コメント> '※1 HH:MM:SSには任意の時刻を記入する (例) 9時5分なら 09:05:00 '※2 HH:MM:SSには任意の時間を記入する (例) 3分後なら 00:03:00 http://www.happy500z.com/YNxv214.html#8-1

cbr4001964
質問者

補足

サンプルまで付けて頂き有難うございます。 質問なのですが、このサンプルだと、Excelが、CPUを独占しませんか?出来れば外部からの割り込みみたいなのが欲しいのですが?? ピントがずれていたら申し訳ありません。 宜しくお願い致します。

その他の回答 (1)

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

> 質問なのですが、このサンプルだと、Excelが、CPUを独占しませんか? 最後の例の、Sub 実行中のマクロを指定時刻まで一時中断して再開する() は、実行すると、終了するまでは他の操作を受け付けなくなりますが、他のはそんなことないですよ。