• ベストアンサー

「一定の時間間隔で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

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

  • ベストアンサー
  • kybo
  • ベストアンサー率53% (349/647)
回答No.1

以下の様に改変してください。 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")」とします。

komet115
質問者

お礼

ありがとうございました。

komet115
質問者

補足

ありがとうございます。 最後これとは別に 本ループ停止をマクロ化してボタン配置 したいんですができますか??

その他の回答 (2)

回答No.3

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 を使った場合の停止要領は少し違います。

回答No.2

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 が呼ばれると思います。

komet115
質問者

補足

ありがとうございます。 最後これとは別に 本ループ停止をマクロ化してボタン配置 したいんですができますか??

関連するQ&A

  • 「一定の時間間隔で5秒毎にMacro1を実行する」

    「一定の時間間隔で5秒毎にMacro1を実行する」 一応startマクロ、stopマクロは作成してみたのですが、 下記stopコマンド実行しても止まらなかったような気がします。 ここから改変するとしたらどうですか? Public timestop As Boolean Sub test() Dim tt As Double Dim wt As Double tt = Now + TimeValue("00:00:05") '5秒後 wt = TimeValue("00:00:02") 'インターバル2秒 Application.OnTime tt, "Macro1", wt If (timestop = False) Then Time = Timer Application.OnTime earliesttime:=(Now + TimeValue("00:00:01")), procedure:="test" End If End Sub ---------------------------------------- ここからstart,stopマクロ Sub t_start() timestop = False Call test End Sub Sub t_stop() timestop = True End Sub

  • 「一定の時間間隔で5秒毎にマクロを実行する」

    http://okwave.jp/qa/q8690800.html の続きです。ご指摘のとおりコードを改変しました。 startはばっちり動いたのですが、stopが命令を受け付けてくれなくて 「Ontimeメソッドは失敗しました。Applicationオブジェクト」とでます。 何か原因があるのでしょうか。ご指摘よろしくお願いします。 Sub t_start() Call last20txt End Sub Sub t_stop() Application.OnTime earliesttime:=tt, procedure:="last20txt", Schedule:=False End Sub ------------------------------------------- 下記Call先です。 Sub last20txt() Dim Srg As Range Dim kensu As Long Set Srg = Cells(1, 1) Workbooks.Open ("C:***.csv") kensu = Cells(Rows.Count, 1).End(xlUp).Row Range(Cells(kensu - 19, 1), Cells(kensu, 4)).Copy Srg ActiveWorkbook.Close Dim wt As Date Dim tt As Date tn = Now() tt = tn + TimeValue("00:00:05") '5秒後 wt = TimeValue("00:00:02") 'インターバル2秒 Application.OnTime tt, "last20txt", wt End Sub

  • エクセルシートの順繰り表示マクロについて

    エクセルにて随時更新されるデータを全画面表示し、3枚のシートを5秒置きに順繰り表示させるようマクロを組みました。始めは順調なのですが、数時間たつとフリーズしてしまいます。そもそもエンドレスのマクロプログラム実行に無理があるのでしょうか。 または下記のプログラムに問題があるのでしょうか。ご教授お願いします。 Sub Macro1() Sheets("Sheet2").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro2" End Sub Sub Macro2() Sheets("Sheet3").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro3" End Sub Sub Macro3() Sheets("Sheet1").Select Application.OnTime Now + TimeValue("00:00:05"), "Macro1" End Sub

  • セルの現在時刻表示の更新間隔をセルから入力したい

    セルの現在時刻表示の更新間隔をセルから入力したい マクロは以下を使用してますが更新間隔変更のtimevalue(c3)とするとエラー13が出ます。 どなたかお教え下さい。 ******************************************** Sub Auto_Open() Dim TargetTime, WaitTime TargetTime = Now + TimeValue("00:00:01") WaitTime = TimeValue("00:00:10") Application.OnTime TargetTime, "Macro1", WaitTime End Sub Sub Macro1() Dim TargetTime, WaitTime Calculate TargetTime = Now + TimeValue("00:00:01") 'ココをセルにするとエラー13がでる WaitTime = TimeValue("00:00:10") Application.OnTime TargetTime, "Macro1", WaitTime End Sub Sub auto_close() Dim i As Integer, TargetTime On Error Resume Next For i = 1 To 10 TargetTime = Now + TimeValue("00:00:" & Application.Text(i, "00")) Application.OnTime TargetTime, "Macro1", , False Next i End Sub **********************************************

  • エクセル時間毎ごとにマクロを実行するやり方。

     初めまして、よろしくお願いします。より正確な指定時間毎にマクロを実行させるやり方を考えています。  1分毎ごとにマクロを実行する nextTime = Now() + TimeValue("00:01:00") Application.OnTime nextTime, "時間毎ごとに実行" というやり方は解るのですが、 Application.OnTime TimeValue("09:00:00"), "時間毎ごとに実行"  この指定時間("09:00:00")に実行するマクロを利用し ("09:01:00")、("09:02:00")、("09:03:00")、("09:04:00")、("09:05:00"),・・・・・の時間、秒が00になると("hh:ss:00")マクロを実行されるやり方は有るのでしょうか。  もし有るのでしたら、よろしくお願いします。

  • vba セルに入力した時間をマクロで受け取るには?

    はじめまして、 マクロを使ってタイマーをセットしているのですが、 たとえば1行A列に9:00:00という時間をセットして、 それをマクロでうけとりmacro1というマクロを時間とおりに動かすようにタイマーにせっとします。 プログラムは以下のとおりなのですが、 TimeValue(Cells(1, 1))のところがうまくいきません。 解決方法を教えてください。 よろしくお願い思案す。 Set_timer = TimeValue(Cells(1, 1)) Cells(5, 3) = "設定完了" MsgBox "タイマーを設定しました。" Application.OnTime TimeValue(Set_timer), "macro1"

  • On Timeメソッド?で更新されません。

    On Timeメソッド?で更新されません。 現在Web上にあった例を参考に 下記の様にホワイトボード解析シートのA1セルに 20秒ごとに現在時刻を表示させています。 これを応用して、違うシートに 17:00に天気というマクロを実行するよう 作成したのですが上手くいきませんでした。 Sub Auto_Open()とSub auto_close()のtargetTimeを targetTime = TimeValue("17:00") Macro7を天気 としたのですが、なぜ更新されなかったか分かる方がいらっしゃいましたら ご教授下さい。 Sub Auto_Open() Dim TargetTime, WaitTime TargetTime = Now + TimeValue("00:00:01") WaitTime = TimeValue("00:00:10") Application.OnTime TargetTime, "Macro7", WaitTime End Sub Sub Macro7() On Error Resume Next Worksheets("ホワイトボード解析").Range("A1").Calculate Application.OnTime Now + TimeValue("00:00:20"), "Macro7", TimeValue("00:00:10") '↑TimeValueの最初の方をへんこうする事で時間が変わる End Sub Sub auto_close() Dim i As Integer, TargetTime On Error Resume Next For i = 1 To 10 TargetTime = Now + TimeValue("00:00:" & Application.Text(i, "00")) Application.OnTime TargetTime, "Macro7", , False Next i End Sub

  • アクセスのタイマー間隔

    アクセス2003のタイマー間隔の実行で 何回実行したかカウントを取りたいのですが変数がクリアなるのか いきません。 フォームを開いた時 Dim a As Double a=0 Private Sub Form_Timer() Dim a As Double a = a + 1 MsgBox a End Sub 返し値がすべて 1になる ご伝授お願いします

  • Excel2003 VBAでタイマーを組んでマクロを走らせたいのですが

    Excel2003 VBAでタイマーを組んでマクロを走らせたいのですが、以下のエラーメッセージが出ました。 マクロ "C:\aaa\Timer.xls'!Record1'が見つかりません。 マクロは、Timer.xlsブックのThisWorkbookに記述しています。 ---------------------------------------------------------------------- Sub timer1() 指定時刻 = TimeValue("09:00:00") 終了時刻 = TimeValue("11:00:00") Application.OnTime 指定時刻, "Record1" End Sub ---------------------------------------------------------------------- Sub Record1() Dim sh1, sh2 If TimeValue(Now) >= 終了時刻 Then '終了時刻になら終わる MsgBox "終了時刻になりました。" Application.CutCopyMode = False Exit Sub End If Set sh1 = Worksheets("1") Set sh2 = Worksheets("2") sh1.range("G5:G506").Copy 'コピー sh2.range("Q5:Q506").PasteSpecial Paste:=xlValues Selection.Offset(0, 2).Select '2行ずらす 指定時刻 = Now + TimeValue("00時05分00秒") '5分後 Application.OnTime 指定時刻, "Record1" End Sub ---------------------------------------------------------------------- どこを直せばよろしいのでしょうか? よろしくお願いします。

  • VBAのタイマー

    こんにちは VBAで、一日に一回起動するマクロを作ろうと思っています。 Sub timer() Dim settime As Variant Dim waittime As Variant settime = TimeValue("00:35:00") '指定時刻 waittime = TimeValue("00:01:00") settime = settime + waittime '指定時刻待ち時間 Application.OnTime TimeValue(settime), "sub" End Sub な感じなのですが、これだと一度起動すると二日目以降は動作しなくなります。 毎日起動するにはどうしたら良いものでしょうか

専門家に質問してみよう