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

このQ&Aのポイント
  • マクロを定期的に実行する方法について質問があります。
  • 質問者は、startは正常に動作するが、stopが失敗していると述べています。
  • 具体的なエラーメッセージとして、「Ontimeメソッドは失敗しました。Applicationオブジェクト」というものが表示されています。
回答を見る
  • ベストアンサー

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

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

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

「Dim tt As Date」はモジュールの先頭。プロシージャの外に記述してください。 Dim tt As Date Sub t_start() Call last20txt End Sub Sub t_stop() Application.OnTime earliesttime:=tt, procedure:="last20txt", Schedule:=False End Sub 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 tn = Now() tt = tn + TimeValue("00:00:05") '5秒後 wt = TimeValue("00:00:02") 'インターバル2秒 Application.OnTime tt, "last20txt", wt End Sub

参考URL:
http://officetanaka.net/excel/vba/variable/05.htm
komet115
質問者

お礼

ばっちりできました。 ありがとうございました。 またよろしくお願いします。

関連するQ&A

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

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

  • シート選択について

    いつもお世話になっております。 エクセルでシートを定時(4回)データを更新させ、 更新までの間、シートを自動で選択していくPGを作成したのですが、 エクセルを開くと固まってしまいます。 どうかご指導のほどよろしくお願いします。 Private Sub WorkBook_Open() Dim Update1 As Variant Dim Update2 As Variant Dim Update3 As Variant Dim Update4 As Variant Dim Owarijikan As Variant Call DataLoad Update1 = ("08:00:00") Owarijikan = Update1 SheetLoop (Owarijikan) Application.OnTime TimeValue(Update1), "DataLoad" Update2 = ("10:00:00") Owarijikan = Update2 SheetLoop (Owarijikan) Application.OnTime TimeValue(Update2), "DataLoad" Update3 = ("15:00:00") Owarijikan = Update3 SheetLoop (Owarijikan) Application.OnTime TimeValue(Update3), "DataLoad" Update4 = ("16:00:00") Owarijikan = Update4 SheetLoop (Owarijikan) Application.OnTime TimeValue(Update4), "DataLoad" End Sub 'DataLoadはデータ更新のプロシージャです。 -------------------------------- Sub SheetLoop() Dim Jikan As Variant Dim Owarijikan As Variant Jikan = Time Owarijikan = Sheet8.Cells(5, 3).Value Do Until Jikan > (Owarijikan) Application.OnTime TimeValue(Jikan), "Select11" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "SelectC" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "Select12" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "Select13" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "SelectC" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "Select16" Jikan = Jikan + TimeValue("0:0:05") Application.OnTime TimeValue(Jikan), "SelectC" Jikan = Jikan + TimeValue("0:0:05") Loop End Sub ’実行するプロシージャSelectXXはシートを選択するプロシージャです。 以上よろしくお願いします。

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

    セルの現在時刻表示の更新間隔をセルから入力したい マクロは以下を使用してますが更新間隔変更の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 **********************************************

  • Application.OnTime Nowの変数

    他のプロシージャに1秒後に変数を渡すテストをしました。 Sub test01() Dim ws As Worksheet Set ws = ActiveSheet Application.Wait Now + TimeValue("0:00:01") Call AAA(ws) 'ただしく渡される End Sub Sub test02() Dim ws As Worksheet Set ws = ActiveSheet Application.OnTime Now + TimeValue("00:00:01"), "AAA(" & ws & ")" 'エラー End Sub Sub AAA(ByVal ws As Worksheet) MsgBox ws.Name End Sub Application.OnTime を使ったほうがエラーになるのはなぜでしょうか? どうやれば正しく渡せるうのでしょうか?

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

    エクセルにて随時更新されるデータを全画面表示し、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

  • マクロコードについて教えて下さい!

    下記のコードは教えていただいたコードなのですが、他のシートから計算表のシートにうつされると 時間計測をされるようになっています。 ですが、インターネットを開くには問題はないのですが、他のエクセルを開くと(1)の文のとこがエラーになってしまいます。エラーがでないようにすることはできないでしょうか??ぜひお力をかしてください。宜しくお願いします。 Sub timer_on() Dim i, myCol With Worksheets("計算表")     ←(1) For Each myCol In Array("f", "n") For i = 6 To .Cells(Rows.Count, myCol).End(xlUp).Row If .Cells(i, myCol).Value <> "" Then .Cells(i, myCol).Value = .Cells(i, myCol).Value + TimeValue("0:00:10") Next Next End With Application.OnTime Now + TimeValue("0:00:10"), "timer_on" 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 な感じなのですが、これだと一度起動すると二日目以降は動作しなくなります。 毎日起動するにはどうしたら良いものでしょうか

  • エクセルVBAの実行時エラー1004の解決方法

    Private tm As Double Sub Auto_Open() Call 更新 End Sub Sub 更新() Application.Calculate tm = [now()+timevalue("00:00:10")] Application.OnTime tm, "更新" End Sub '===================================================== Sub 更新やめ() Application.OnTime tm, "更新", , False End Sub この様なVBAがあります。 ここで「Sub 更新やめ()」のVBAを何度も実行すると「実行時エラー’1004’:’OnTimeメソッドは失敗しました;’_Application’オブジェクト」と表記されます。 何度も実行しても上記の表示が出ない様にする為のVBAはどの様に改造すれば良いでしょうか?

  • 割り込み処理

    Application.OnTimeで一定時間後に処理をさせたいのですが For文のループ処理を完了してからApplication.OnTimeが実行されてしまいます。 ループ処理中にApplication.OnTimeを優先して実行させることって出来るのでしょうか? Option Explicit Private Declare Sub Sleep Lib "KERNEL32.dll" (ByVal dwMilliseconds As Long) Private Sub CommandButton1_Click() Call M1 End Sub Private Sub M1() Dim i As Integer Application.OnTime Now() + TimeValue("00:00:03"), "Sheet1.M2" For i = 0 To 30 Range("A1") = i Sleep 1000 Next i End Sub Sub M2() MsgBox ("123") End Sub

専門家に質問してみよう