• ベストアンサー

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

ボタンを押した時刻から次の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/17068)
回答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% (1876/4424)
回答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 文を使うと解りやすくなります。

関連するQ&A

  • VB6で定時刻処理

    VB6で1日1回、決まった時間に処理をさせたい、という場合、どういう方法で行うのが一番いいのでしょうか。 私が現在やっている方法は、 1分ごとにタイマーイベントを発生させ、その中で、現在の日時が指定の時刻だったら処理を起動する、という仕組みです。 しかし、これでは負荷状況によってはタイマーのイベントや、以降の処理が待たされ、時刻の判定をするタイミングで、すでに目的の時刻を過ぎてしまっているということが考えられます。 タイマーイベントが9:59:59秒に発生し、現在時刻を取りに行ったら10:00:00秒になっていたというようなケースです。 時刻の判断は、hh:mmのフォーマットで比較しているので、分の単位が違えば条件に合致しなくなります。 誤差範囲を設け、「現在の時刻-30秒 < 指定時刻 <= 現在の時刻+30秒」のような条件にすれば、ある程度回避できますが、1分以上待たされるようなケースでは対応できません。 このような状況を回避するにはどうしたらいいでしょうか。 処理を起動する時刻が可変なので、Windowsのタスクなどは使えないです。 ATコマンドをうまく使えばできるのでしょうか。 よろしくお願いいたします。

  • PHPのif文でその処理を途中で抜けるにはどうすればよいでしょうか?

    PHPのif文でその処理を途中で抜けるにはどうすればよいでしょうか? for文やwhile文ではbreakやcontinueなどが使えるようですが、if文にはないのでしょうか? 条件分岐がいくつかあって、その一つを途中で抜けて次の条件分岐へと移行したいのですが、 exitを使ってしまうと、次へ行かずに処理が中止されてしまいますし、 どのようにすればよいのか分からず困っています。何かよい方法はないでしょうか?

    • ベストアンサー
    • PHP
  • バス時刻表ってなぜ短時間で次のバス停につけるような時刻設定になっている

    バス時刻表ってなぜ短時間で次のバス停につけるような時刻設定になっているんだ? 例えばバス停Aとバス停Bでは所有時間1分に設定された時刻として記載されたとします。 でもバスって渋滞になること、信号にひっかかること等考慮すれば必ず1分超えることも あるでしょう。そして予定より遅れる可能性ある。僕バスの時刻表、所有時間に興味あるからよく見るんだ。でも逆に1分でなく次のバス停間隔までの所有時間を最低でも2分にしておけば もし予定より早くつけばそこでバスが待っていればいいわけだし、余裕もっていけるのではないかと。 だから俺としては一つ次のバス停までの所有時間をもう少し特に渋滞しがちな所、信号のあるところは 長めに設定されるといいのではないかと。

  • VBAで時刻の記述方法

    エクセルのVBAの時刻処理に関するif文の記述方法がわかりません。 例を挙げて説明します。 例 今の時刻が9:00-17:30なら処理(1)をそれ以外なら処理(2)を実行する 上記のように現在の時間を用いたif文を書きたいと思っています。 現在の時刻や日を取得することまではできたのですが、上記のような処理をするのができずに困っています。 また、下記のようにString型で時刻を記述して日時を扱う処理はできるのでしょうか?たとえば、下記時間を一時間進める等・・・ Dim 日時 As String 日時 = "2007/10/27 20:17:00" 簡単な質問ですがお願いします。

  • 処理時間により、その後の処理の分岐をしたいのですが

    PHPスクリプト内にて、ある処理が例えば30秒以上かかった場合は、その瞬間にexit()やエラーをecho()というような 実装をしたいと思うのですが、どのように書けばいいのか思いつきません。 function hoge() { /* 処理内容 */ //α return $foo; } $foo = hoge(); //β があった場合、どこに、どのように書けばいいのでしょうか? 簡単に書けば、 $time = time(); if(time() - $time >30) { echo "時間超過"; } のような時間的処理分岐を入れたいと思うのですが。 αやβの前に$time = time();を置いたとしても、αの"処理内容"やβの関数実行の後にif(){}節を入れることになるので、 逐次処理のせいで、処理が15分かかった後とかにエラー出力とかになってしまいます。 自分は、何かをスクリプト中で実行し、その処理が30秒を超えた場合はエラーを出したいと考えております。 上記のような分岐方法でなくてもいいのですが、どのように書けばいいのかアドバイス頂けないでしょうか?

    • ベストアンサー
    • PHP
  • 起動したままでも時刻がずれます

    パソコンの時刻が起動したままでもずれてしまいます。 インターネット時刻設定で今すぐ更新を押すと、「同期中にエラーが発生しました。」というメッセージが表示されるものの時刻は正しくなります。 しかし、そのまま使用していると10分~20分くらいで時刻がおかしくなります。 おかしくなった際の日時はその時によってバラバラですが、1週間近く前の日にちになることもあります。 現在のパソコンを購入してから数ヶ月でこの症状が発生し半年ほど経過した現在も継続しております。時刻がずれる以外は特に問題なく使用できております。 (拙い知識で組み立てたWindows8のデスクトップパソコンです。) インターネットで色々と検索してみましたが、起動時にずれるという内容は見つけられるものの、このような内容のものは見つけられず、原因がわからずずっと困っておりましたので、思い切って質問させていただきました。 他にも確認したい事項がありましたら追記させていただきます。 よろしくお願いします。

  • 処理時間&CSVファイル出力について

    プログラムで処理1~3までの流れがある場合に、処理1~処理3それぞれの処理時間(秒)を求めたいです。 <例> 処理1 処理2 処理3 処理1の前の現在時刻を求めておき、処理2に入ったときの現在時刻から処理1の前の現在時刻を引けば処理時間(秒)求めることができると思うのですが、プログラムでどのように実装すればよいかわかりません。 現在時刻を求めるプログラムは、 Public Function GetTimeLong() As Long '処理時間 Dim stTime As SYSTEMTIME '初期化 GetTimeLong = 0 InitSystemTime stTime '取得して変換 If GetTime(stTime) = True Then GetTimeLong = stTime.wMilliseconds ' ミリ秒 GetTimeLong = GetTimeLong + stTime.wSecond * 1000& ' 秒 GetTimeLong = GetTimeLong + stTime.wMinute * 1000& * 60& '分 End If End Function で求めることができると思います。 また、処理1~3までの得られた処理時間を、 処理1 処理2 処理3 ○秒  ○秒  ○秒 とCSV形式ファイルで保存したい場合、どのようなプログラムを書けば実装できるのでしょうか? どなたかご教授をして頂ければ助かります。 よろしくお願い致します。

  • アクセス コンボボックスの選択値による処理分岐

    いつもお世話になっております。 コンボボックスを選択することで処理を分岐させたいのです。 「cmb_選択値」というコンボボックスがあり、 選択しない場合は「選択してください」というメッセージを表示させ、Exit sub 1と選択した場合は、1の処理(call1) 2を選択した場合は、2の処理(call2) 3・・・ というイメージで処理を分岐したいと考えています。 If文までは多少理解できているのですが、 Case文がよくわからない初心者なのでお手数おかけしますが、 ご教示いただけると幸いです。 よろしくお願い致します。

  • Windows7の時刻表示が9時間遅れる。

    宜しくお願い致します。今年4月、MACPRO(OS~バージョン10.7.4)を購入し、その後、このPCにWindows7もインストールして使用しています。MACの場合、時刻は、問題ないのですが、Windowsを起動すると時刻が、丁度9時間遅れて表示されます。今朝8時だとすると昨日の23時の表示が出ます。日付と時刻の変更で時間調整しても次にPCを起動するとやはり時間が遅れています。タイムゾーンの設定も問題ないし、時間の同調設定も問題ない様に見えます。原因が分かりません。今後どう対応すべきか、教えて頂ければ幸いです。宜しくお願い致します。

  • 時間間隔の計算方法

    時間間隔の計算方法 VB.NET2005で開発をしてます。 アプリ起動後、指定時間から分間隔で処理をしようと思います。 例)20分間隔 10時10分に起動すれば 10時20分に処理 10時40分に処理 11時00分に処理 ・ ・ ・ としたいのですが 10時10分に起動すれば 10時30分に処理 10時50分に処理 ・ ・ と起動した時間からしか時間間隔がとれません。 コード '現在時刻 Dim nowtime As DateTime = System.DateTime.Now '処理間隔時 exetime = 20 Label1.Text=nowtime.AddMinutes(exetime).ToShortTimeString '次回時間表示 System.DateTime.Now で現在時刻を取得してそれに20分をたしてます。 時間の指定方法を教えてください。 よろしくお願いします。

専門家に質問してみよう