- ベストアンサー
「一定の時間間隔で5秒毎にマクロを実行する」
Timer関数を使ったループ 「一定の時間間隔で5秒毎にマクロを実行する」 ようにしてMacro1を実行したいのですが、 うまくいきません。どう改変したらいいでしょうか。 Sub Macro2() Dim tt As Double Dim wt As Double tt = Now + TimeValue("00:00:05") '5秒後 wt = TimeValue("00:00:01") 'インターバル1秒 Application.OnTime TimeValue("00:00:05"), "Macro1", TimeValue("00:00:01") End Sub
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
以下の様に改変してください。 tt = Now + TimeValue("00:00:05") '5秒後 wt = tt + TimeValue("00:00:01") 'インターバル1秒 Application.OnTime tt, "Macro1", wt なお、Macro1の方は例えば以下です。 Sub Macro1() Range("A1").Value = Range("A1").Value + 1 Call Macro2 End Sub >Application.OnTime TimeValue("00:00:05"), "Macro1", TimeValue("00:00:01") では、午前0時0分5秒に実行されます。 ので、EarliestTimeの引数は、「Now+TimeValue("00:00:05")」とします。
その他の回答 (2)
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Public Sub Pause(ByVal PauseTime As Single) Dim Finish As Single Finish = Timer + PauseTime Do DoEvents Loop Until Timer > Finish End Sub 添付図が判りにくいですが、これが Windows3.1 時代のポーズ関数。 Sub XXXX1 StopNow = False Do Call AAAA Pause 5 Loop Until StopNow End Sub XXXX1 は5秒間休止して Call 文を StopNow が真になるまで実行します。 このループを止めるには、ボタンを押したイベントで Sub XXXX2 StopNow = True End Sub と、StopNow に True を代入します。 PS、なお、Application.OnTime を使った場合の停止要領は少し違います。
- 山田 太郎(@f_a_007)
- ベストアンサー率20% (955/4574)
Windows3.1登場時に作成した Pause() を紹介します。 添付図は、Excel2010 にて5秒毎にDebug.Print を呼び出しています。 Dim StopNow As Boolean Sub XXXX1 StopNow = False Do Call AAAA Pause 5 Loop Until StopNow End Sub Sub XXXX2 StopNow = True End Sub これで、StopNow が真になるまで5秒毎に AAAA が呼ばれると思います。
補足
ありがとうございます。 最後これとは別に 本ループ停止をマクロ化してボタン配置 したいんですができますか??
お礼
ありがとうございました。
補足
ありがとうございます。 最後これとは別に 本ループ停止をマクロ化してボタン配置 したいんですができますか??