• ベストアンサー

ジャスト時刻に起動する処理

ボタンを押した時刻から次の5分後に起動したい。(起動1分前の場合は次の5分に設定したい) 現在時刻 起動時刻 13:36 → 13:40 13:55 → 14:00 23:59 → 00:05 (起動1分前なので次の5分に設定したい) ボタンを押した時間から、起動時刻を5分間隔でジャストで起動したい場合はどう組むのが最適でしょうか。IF文で分岐させて処理させてみましたがどうもうまくいきません。 宜しくお願い致します。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.3

ワークシートのCeiling関数を使うと良いですよ Dim 起動時刻 As Date 起動時刻 = Format(Application.Ceiling(TimeValue("13:36:00") + TimeValue("00:02:00"), "0:05:00"), "hh:mm:ss") MsgBox 起動時刻

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

下記は、小生の興味でやった部分があり、質問の意図とちがうかもしれないが、参考になれば。 シートのA列とC列に(B列は空白ー>特に意味ないが) おはよう 0:00:10 こんにちわ 0:00:15 はやくしろ 0:00:10 もう寝ろ 0:00:13 皿を洗え 0:00:15 ゆかそうじをせよ 0:00:20 閉店せよ 0:00:05 ーー C列の 0:00:05 などの部分は、5秒後を意味(指定)している。 時刻が来ると、A列の文章を読み上げる。 その後同行のC列の時間経過後に、その後の処理を次行に基づいて行う。 ーー 標準モジュールに Sub SetAlarm() i = i + 1 Application.OnTime Now() + TimeValue(Cells(i, "C")), "alarm" End Sub Sub alarm() Static i i = i + 1 MsgBox Format(Now() + TimeValue(Cells(i, "C")), "hh:mm:ss") Cells(i, "A").Speak SetAlarm End Sub 読み上げをさせる機能を利用するので、VBE画面で、 ツールー参照設定ーMicrosoft Speach Liblaryを指定しておく。 取り合えずテストでの、中止は、実行₋中断でやってください。

  • kteds
  • ベストアンサー率42% (1882/4440)
回答No.1

下記のようにしたいということですか。 13:30 → 13:35 13:31 → 13:35 13:32 → 13:35 13:33 → 13:35 13:34 → 13:40(起動1分前なので次の5分に設定したい) 13:35 → 13:40 13:36 → 13:40 13:37 → 13:40 13:38 → 13:40 13:39 → 13:45(起動1分前なので次の5分に設定したい) ---次のように算出してはどうでしょうか。 ・現在時刻から5分後の時刻を仮の起動時刻として算出しておいて、 5分後の「分」1桁目を判定する。 ・「分」1桁目が4,5,6,7,8の場合は仮の起動時刻の「分」1桁目を 0 とする。 ・「分」1桁目が0,1,2,3,9の場合は仮の起動時刻の「分」1桁目を 5 とする。 ・上記のように算出した時刻を起動時刻とする。 ---if 文でもいいですが、switch - case 文を使うと解りやすくなります。