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

このQ&Aのポイント
  • VBA初心者のためのApplication.OnTimeの使い方とは、目覚し時計のように時間になったら実行させたいタスクを予約する方法です。
  • たとえば、ThisWorkbook_Openイベントで複数のタスクを予約することができます。
  • ただし、11時前にExcelを終了させると最後のタスクは実行されません。
回答を見る
  • ベストアンサー

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を終了させたら 最後のタスクは自然消滅するのでしょうか、それともエラー扱いになるのでしょうか。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんばんは。 今、改めて、Help で、OnTime メソッドを読んでみました。 その内容では、分からないですね。このヘルプの文章は非常に良くないですね。 >Workbookを開いた時に「3つのタスクが予約された」と考えて良いのでしょうか。 ちゃっん設定されています。 >その場合、11時前にEXCELを終了させたら >最後のタスクは自然消滅するのでしょうか、 このOnTime イベントのトラップの設定は、Excelを終了すると消えてしまいます。しかし、そのブックを閉じても、Excelがオープンして、スケジュール(Schedule:=)をFalse にしない限りは、そのトラップは残って、そのブックを呼び出し、マクロを実行します。

mitokoomon
質問者

お礼

Wendy02 様 ご返事ありがとうございました。 >>スケジュール(Schedule:=)をFalse にしない限りは、そのトラップは残って、そのブックを呼び出し、マクロを実行します。 なるほど、勉強になりました。

関連するQ&A

  • エクセルVBA 10分後にエクセル自動終了&カウン

    どなたかご教授お願い致します。 ・エクセルの当該ブックを、起動10分後に自動終了(保存しない)させる ・開いている間は、10分のカウントダウンを「分:秒」でA1セルに表示する 以上を実行したいのですが、VBAは全く素人ですので、うまくいきません。 見よう見まねで、以下のようなことをしましたが、結局ダメでした。 何卒、よろしくお願い致します。 ThisWorkbook Workbook Open Private Sub Workbook_Open() test01 Application.OnTime Now + TimeValue("00:10:00"), "終了" End Sub 標準モジュール Module1 Sub 終了() ThisWorkbook.Close Savechanges:=False Application.Quit End Sub Sub test01() With Sheets("バックアップ").Range("A1") .Value = Time .NumberFormatLocal = "mm:ss" End With Application.OnTime Now + TimeValue("0:00:01"), "test01" End Sub

  • VBAのOnTimeの停止について

    下記コードで右上の×ボタン(エクセルアプリではなくbookを閉じる×です)でCLOSEした場合は停止されるのですが、 ThisWorkbook.Closeで閉じた場合MsgBox "timer cxl"は呼ばれるのですがタイマーがキャンセルできず10秒後に閉じたbookが勝手に開かれMsgBox "chk"が呼ばれてしまいます。 エクセルは2003、WIN10です。 どなたか何か原因や回避策があればご教授お願い致します。 //標準モジュール Public timer As Date Public timerFlag As Boolean Sub chk() timerFlag = False MsgBox "chk" End Sub //ThisWorkbook Private Sub Workbook_Open() timer = Now + TimeValue("00:00:10") timerFlag = True Application.OnTime timer, "chk" MsgBox "open" End Sub Private Sub Workbook_BeforeClose(Cancel As Boolean) If timerFlag Then Application.OnTime timer, "chk", , False MsgBox "timer cxl" End If MsgBox "close" End Sub

  • エクセルVBA

    VBAの素人です。 以下のようなVBAを実行しようと、何とか形にしました。 単独のBOOKではうまくいくのですが、同時に他のBOOKを開くと 「インデックスが有効範囲にありません」とエラーになります。 エラー箇所は、With Sheets("Sheet1").Range("B1")部分です。 修正をご教示頂ける方、何卒よろしくお願い致します。 全くVBA無知なのにすみません。 Private Sub Workbook_Open() test01 test02 Application.OnTime Now + TimeValue("00:10:00"), "終了" End Sub Sub 終了() Application.OnTime Now + TimeValue("0:00:02"), "test01", , False ThisWorkbook.Close Savechanges:=False Application.Quit End Sub Sub test01() With Sheets("Sheet1").Range("B1") .Value = Time .NumberFormatLocal = "mm:ss" End With Application.OnTime Now + TimeValue("0:00:02"), "test01" End Sub Sub test02() With Sheets("Sheet1").Range("B2") .Value = Time .NumberFormatLocal = "mm:ss" End With 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のように書いてみましたが、 エラーになります。 制限時間内にリセットボタンを押せば何事もなかった、という風にやりたいのです。 宜しくお願いします。

  • 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 を使ったほうがエラーになるのはなぜでしょうか? どうやれば正しく渡せるうのでしょうか?

  • Excelのontimeについて

    a1に数式が入っています。 c3からd3,e3,f3…に一定時間ごとにa1の値を入力するマクロがあります。 Sub 入力() Sheets("Sheet1").Select Range("a3").End(xlToRight).Offset(0, 1).Select ActiveCell.Value = Cells(1, 1).Value End Sub Sub スタート() Dim MyTime As Date Dim Jikan As Date Dim i As Integer Jikan = TimeValue("13:59:00") For i = 0 To 5 MyTime = Jikan + TimeSerial(0, 0, 5) * i Application.OnTime MyTime, "入力" Next End Sub で、教えていただきたいのですが、"入力"を動かしている途中で 上記のマクロをとめるにはどうしたらよいのでしょう? ご教授ください。

  • 特定のブックにのみ作動するマクロを教えてください。

    ブックAに指定時間で作動するマクロを入れました。 ブックAしか開いていないときは作動するのですが、同時にブックBを開いて、ブックBがアクティブの場合に、そのマクロがブックBに対して作動してしまいます。 ブックが複数開いていても、ブックAにのみマクロを作動させる方法をどなたかご教授願います。 ********* ■ブックAのThisWorkBook Private Sub Workbook_Open() Application.OnTime TimeValue("00:15:00"), "sakujyo" End Sub ■標準モジュールのModule1に"sakujyo"を置いています。 よろしくお願い致します。

  • Application.OnTime の使い方

    エクセルのマクロで、過ぎた時間の背景を グレーにする予定表を作ろうとしてます。 試しに一秒ごとにグレーにしようと以下のものを書いてみたのですが 1セルしかグレーになりません。 理想としては1秒、2秒、3秒ごとに一つずつセルを変えたいです。 range * i で型の問題がある気がするのですが、 なにかアドバイスあればよろしくお願いします。 以下は関数のページです。 TimeValue http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/script56/html/vsfcttimevalue.asp OnTime http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbawd10/html/womthOnTime.asp ---------------------------------------------------- Sub timer() Dim range As Integer For i = 1 To 100 range = TimeValue("0:00:01") my_time = Now + (range * i) Application.OnTime my_time, "setBg" Next End Sub Sub setBg() Cells(Second(Now), 1).Interior.ColorIndex = 16 End Sub

  • Application.OnTime が動作するタイミング(vba)

    まず10秒たってからtest2222と表示させて、次にtestと表示させるプログラムを以下のように作成したのですが、なぜか先にtestが表示されて、次にtest2222が表示されます。 なぜなのでしょうか? 分かる方がいれば教えてください。 よろしくお願いします。 Sub aa() Application.OnTime Now + TimeValue("00:00:10"), "kara" MsgBox "test" End Sub Sub kara() MsgBox "test22222" End Sub

  • エクセル 複数ファイル 一つを常時最背面

    A エクセルファイルを複数開いている状態です。 B その内一つのファイルはVBAで10秒ごとに自動保存しています。 C その他ファイル作業中で、Bのファイルの自動保存時、瞬間ですが最前面 に上がってきます。 Cの現象を避ける方法を教えてください。よろしくお願いします。 BのファイルのVBA内容は下記のとおりです。 Sub X() ThisWorkbook.Save Call Y End Sub Sub Y() Application.OnTime Now() + TimeValue("00:00:10"), "X" End Sub

専門家に質問してみよう