• 締切済み

OnTime を使って、分間隔で実行したいのですが

時間指定ができる「ONTime」と思って試行錯誤をしておりますが、For-Next のような繰り返しは、時間になった時点でNext回数すべてが実行されてしまいました。ステプアップ的な動作は出来ないでしょうか?

みんなの回答

  • Kame_LABO
  • ベストアンサー率24% (30/122)
回答No.4

C2はB2の10分後になっていますか? 1分毎に1回ベルがなる(実行マクロ名が実行される)ようになっているはずです。 WINDOWS XP で EXCEL2003 の環境です。

  • Kame_LABO
  • ベストアンサー率24% (30/122)
回答No.3

10回行ないたい場合は、指定時刻をFor~Nextでまわして10回指定すればいいのではないでしょうか? For intI=0 To 9 指定時刻 = TimeValue(Range("L1") & "時" & Range("L4")+intI & "分" & "00秒") 'スタート時間 待ち時間 = TimeValue("00時" & "00分" & "30秒") '30秒 Range("C2") = 指定時刻'--->ここが問題になりますが・・・ Range("D2") = 待ち時間 Application.OnTime TimeValue(指定時刻), "実行マクロ名", TimeValue(待ち時間) Next intI で指定時間の先の00秒を最初に開始して、1分ごとに10回処理をします。

yasima278
質問者

補足

ありがとうございます。 このまままわすと、指定時間になって10回連続にベルがなってしまいますが? (C2 は単に表示をしているだけです。) よろしくお願いいたします。

  • Kame_LABO
  • ベストアンサー率24% (30/122)
回答No.2

> 00秒で実行させたいと と言うのはどういうことでしょうか? 5分00秒ちょうどに実行させたいと言うこと? 5分間隔とすると次ぎは10分00秒ちょうど? OnTimeはそのような指定が可能です。 具体的にダメだと判断したプログラムを見せてもらえませんでしょうか?

yasima278
質問者

補足

ご回答ありがとうございます。 申し訳ございませんが、メールの到着が遅くこのコラムの表示の順番がチグハグになってしまっております。 プログラムを添付しました。 いま、テスト用として、1分で動かしております。 スタート時が45秒でも「次の分の00秒」で動作しています。 OnTimeは単発動作のようですので、1回だけの動作は正常に終了しています。 これをFor-Nextで10回設定すると、 指定時間に、OnTimeとマクロが10回連続で動いてしまいます。 何かか良い方法をお願い致します。 Sub 繰り返す() Dim 待ち時間 Dim 指定時刻 Range("B2") = Now '年/月/日/時/分 Range("L1") = Hour(Time) '時 Range("L2") = Minute(Time) '分 Range("L3") = Second(Time) '秒 Range("L4") = Range("L2") + "01" '次の分後にスタートする時間 指定時刻 = TimeValue(Range("L1") & "時" & Range("L4") & "分" & "00秒") 'スタート時間 待ち時間 = TimeValue("00時" & "00分" & "30秒") '30秒 Range("C2") = 指定時刻 Range("D2") = 待ち時間 Application.OnTime TimeValue(指定時刻), "実行マクロ名", TimeValue(待ち時間) End Sub Sub 実行マクロ名() 'ベルを鳴らす Dim wavfile As String wavfile = "C:\Windows\Media\ringin.wav " Shell "mplay32.exe /play /close " & wavfile End Sub

  • Kame_LABO
  • ベストアンサー率24% (30/122)
回答No.1

5分間隔で処理を行ないたい。 決められた回数ではなく、実行中に次ぎの5分後の処理をするか判断して、処理をするようなら5分後に同じ処理をする。 と言う処理をしたいと言うことでしょうか?

yasima278
質問者

補足

その通りです。 5分間隔の繰り返しで良いのですが、00秒で実行させたいと思ったからと、ループにすると他に影響するので避けたい。 以上ですが、よろしくお願いいたします。

関連するQ&A

  • VBAのOnTimeが実行されません。

    VBAのOnTimeが実行されません。 簡単なサンプルコードをコピーして実行させてみると、「マクロを実行できません。このブックでマクロが使用できないか、又は、全てのマクロが無効になっている可能性があります。」とメッセージが出ます。 しかし、マクロの設定は、全てのマクロを有効にするにチェックを入れてありますし、他のマクロは実行されます。 VBA初心者(1か月くらい)で、途方にくれています。

  • OnTimeの取り消しについて

    ヘルプには次のように記述がありますが、指定時刻に 実行させるプロシージャーの取り消しはサンプルの手順 で動作しますが、何秒後・・・を指定した場合のサンプル はうまく取り消せません。"実行時エラー '1004'"と なります。 この場合、どのように記述すればいいのでしょうか? 使用例 次の使用例は、現在から 15 秒後に my_Procedure を実行します。 Application.OnTime Now + TimeValue("00:00:15"), "my_Procedure" 次の使用例は、午後 5 時に my_Procedure を実行します。 Application.OnTime TimeValue("17:00:00"), "my_Procedure" 次の使用例は、前の使用例で設定した OnTime メソッドの設定を取り消します。 Application.OnTime EarliestTime:=TimeValue("17:00:00"), _ Procedure:="my_Procedure", Schedule:=False

  • OnTimeを使ったのですが「エラー」になってしまいます

    VBA でOnTimeの「サンプル」を使ってのタイマーですが、実行すると次のようなエラーが出て、実行マクロへ行けません。 「マクロ"I:\一定時間後に.xls'!実行マクロ名'が見つかりません。」 どうしてなのか教えてください。 Option Explicit Dim 待ち時間 Dim 指定時刻 Sub 一定の時間間隔でマクロを実行する() 指定時刻 = Now + TimeValue("0時00分05秒") '5秒後 待ち時間 = TimeValue("0時00分01秒") Application.OnTime TimeValue(指定時刻), "実行マクロ名", TimeValue(待ち時間) End Sub Sub 実行マクロ名() Dim wavfile As String wavfile = "C:\Windows\Media\ringin.wav " 'wavファイルのパス Shell "mplay32.exe /play /close " & wavfile End Sub

  • EXSEL OnTime

    OnTimeを使ったタイマーですが、サンプルを利用して実行させると次のようなエラーになってしまいます。 「マクロ’I:¥一定時間後にxls'実行マクロ'が見つかりません。」 なにか設定する事項でもあるのでしょうか? Option Explicit Dim 待ち時間 Dim 指定時刻 Sub 一定の時間間隔でマクロを実行する() 指定時刻 = Now + TimeValue("0時00分05秒") '5秒後 待ち時間 = TimeValue("0時00分01秒") Application.OnTime TimeValue(指定時刻), "実行マクロ名", TimeValue(待ち時間) End Sub Sub 実行マクロ名() Dim wavfile As String wavfile = "C:\Windows\Media\ringin.wav " 'wavファイルのパス Shell "mplay32.exe /play /close " & wavfile 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")マクロを実行されるやり方は有るのでしょうか。  もし有るのでしたら、よろしくお願いします。

  • 指定時間に自動実行

    いつもお世話になっております。 早速ですが、 OFFICEXP EXCELでデータを更新するプロシージャを指定時間に実行させたいのですが、どのようにしたら良いのでしょうか。 Ontimeを使用してみたのですがまったく動きません。 Sub Ontime() Object.OnTime earliesttime:=("10:30:00"), procedure:="オートシェイプ28_Click", schedule:=True End Sub 超初心者なのでよろしくお願いします。

  • ontimeのリセット方法

    簡単な問題を出すexcelを作っています。 問題を出した時点でタイマー(ontime)を出し、 1分間だけ猶予を持たせ、 回答が出ればリセットをする。 間に合わなければ「残念でした」を出そうとしています。 Sub start8() Application.OnTime Now + TimeValue("00:01:00"), "timeout8" End Sub Sub reset8() Application.OnTime Now + TimeValue("00:01:00"), "timeout8", , False End Sub Sub timeout8() "残念でした。" End Sub 見よう見まねで上記の通り書きましたが、 分からないのは、これだとresr8の引き金を引いてから、1分後のように思います。 ここはどのように書けばいいのでしょうか。 Application.OnTime Now + TimeValue("00:00:00"), "timeout8", , Falseのように書いてみましたが、 エラーになります。 制限時間内にリセットボタンを押せば何事もなかった、という風にやりたいのです。 宜しくお願いします。

  • VBA Application.OnTime について

    エクセルで、複数のマクロをタイマー設定して 決まった時間になると、実行するようにしています。 Application.OnTime を使用して、複数のタイマーをセットしているのですが セットされているタイマーの内、一部のタイマーだけを解除したい場合 現在セットされている、全タイマーを調べることは可能でしょうか?

  • AccessVBAで実行時間を指定するには

    よろしくお願いします。 VBAで指定した時間に処理(関数)を呼び出すという事がしたくて色々調べていたらApplication.Ontime というやつでなんとかできそうだとメドが立った ・・・つもりでいたのですが、どうやらこれはExcelの機能のようでした。 参照設定でエクセルのオブジェクトライブラリをチェックしたらAccessVBAで  >Excel.Application.Ontime 待ち時間, コマンドA と記述することでひとまず実行予約的な事まではできたのですが、 指定時間になると「コマンドAが見つかりません」 というエラーメッセージが出てしまいます。 おそらくエクセルのマクロを実行しようとして「見つからない」と言われているのでは無いかと考えています。 長くなりましたが質問は、上記のようなコードで、Accessのマクロ(関数)を呼び出すにはどうすれば良いのでしょうか? よろしくお願いします。 上記の前提が勘違いの場合は併せてご指摘頂ければ幸いです。

  • EXCELのApplication.OnTimeは予約のことですか?

    こんにちは、VBAの初心者です。 Application.OnTimeとは目覚し時計をセットするみたいに 時間になったら実行させたいタスクの「予約をする」ことですか。 ---------------- 例えばThisWorkbookに Sub ThisWorkbook_Open()  Application.OnTime TimeValue("09:00:00"), "A"  Application.OnTime TimeValue("10:00:00"), "B"  Application.OnTime TimeValue("11:00:00"), "C" End Sub 標準モジュールに Sub A()  Beep End Sub Sub B()  Beep End Sub Sub C()  Beep End Sub --------------- と書けば、Workbookを開いた時に「3つのタスクが予約された」と考えて良いのでしょうか。 その場合、11時前にEXCELを終了させたら 最後のタスクは自然消滅するのでしょうか、それともエラー扱いになるのでしょうか。