VBA Application.OnTime メソッド

決められた時刻にマクロを起動します

 Application.OnTime メソッド を使うと 指定した時刻にマクロを実行させる ことができます。こばとの作ったマクロで OnTime メソッドを試してみましょ~。

 'KOBATO のメッセージ
 Sub Message()

  Dim mymsg As String

  mymsg = "あとりえこばとをよろしく"

  MsgBox (mymsg)

 End Sub

 '13 時 30 分に、KOBATO のメッセージを表示します
 Sub OntimeTest1()

  Application.OnTime TimeValue("13:30:00"), "Message"

 End Sub

 予め Message というマクロを作ってあります。これは「あとりえこばとをよろしく!」というメッセージを表示させるマクロです。

 OntimeTest1 のほうの中身は1行だけです:

Application.OnTime TimeValue("13:30:00"), "Message"

 OnTime メソッドの引数には時刻と動かすマクロを指定しています。つまり、13 時 30 分きっかりに Message マクロが起動して「あとりえこばとをよろしく!」というメッセージが表示されることになります。皆さんは今から数分後ぐらいの時刻を指定して、実際に表示されるかどうか確認してみてください。あるいは

Application.OnTime Now + TimeValue("00:00:5"), "Message"

というように書き換えると、現在の(マクロを実行したときの)時刻から数えて 5 秒後に「あとりえこばとをよろしく!」が表示されることになります。

 ちなみに、ここで使用している Now関数 は現在の日付を取得する関数、TimeValue関数 は特定時刻を指定する関数です。

 あ、そうそう。スケジュールが有効なのは、上のマクロが記述されているブックが開いているときだけです。閉じてるときには何も起こりません。ていうかさ、そうでなかったら怖いじゃん? Excel とか全然使ってないときに、いきなり画面に
「あとりえこばとをよろしく!」
なんてメッセージが現れたら、コンピュータウィルスにでもやられたのかと思うじゃん?
 

Application.OnTime メソッド

 ま、そんな話はさておいて、Application.OnTime メソッドの書式も載せておきます。

OnTime(EarliestTime, Procedure, LatestTime, Schedule)

 英語で書いてあると分かりにくいかもしれないので、日本語に直しておきます(直訳でなく、意味がわかりやすいようにしてあります)。

OnTime(実行時刻, 実行マクロ, 待ち時間, スケジュール)

 最初の 2 つの引数は上で説明した通りです。

 [待ち時間] は、指定した時刻に他のマクロが起動していたときに「これだけの時間は待ちますよ」というものです。

 [スケジュール] は、省略するか True にしておくと、設定した起動スケジュールが有効になるというものです。False なら無効になります。無効にするなら、最初からこんなメソッド使わなきゃいいわけで、普通はあまり使う機会もないと思うけど、この引数を変数にしておいて、条件によってスケジュールの有効/無効を切り替えるような複雑なマクロ(ゲームとか?)を作る時に使うのかもしれません。あ、そうだ。もし VBA でゲーム作ってる強者がいたら教えてくださいな。そんで、そのファイル送って。こばとが遊ぶから。

 ≫ VBA 辞典メニューに戻って他の記事も読みましょ~♪

スポンサードリンク
末尾大型広告
末尾大型広告

コメントをどうぞ

メールアドレスが公開されることはありません。

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください