もくじ

taka



最新記事 by taka (全て見る)
- 『雑記』最近の私の話~ - 2019年9月26日
- 【動画】自作パソコン構成変更!ケースをNZXT H500に交換しました! - 2019年6月5日
- VBA 『Array関数』指定した要素で配列を作成する - 2019年5月23日
- 「動画」初完全ワイヤレスイヤホン『Jabra Elite Active 65t』 - 2019年5月17日
- VBA 日付で令和を簡単に判定してみよう - 2019年5月7日
どうも、taka(@takabou63)です(^^♪
VBAで時間を指定してプログラム(マクロ)を実行できたらいいのになぁ・・・
なんて思ったことはありませんか?・・・ないかもしれませんね(笑)
ですが、せっかくある機能なので今回は「時間指定でマクロを実行するOnTimeメソッド」をご紹介していきます(^-^)
Application.OnTimeメソッド
Application.OnTimeメソッドの書式
さて、指定した時間にVBAを実行したい場合には【Applicationオブジェクト】の【OnTimeメソッド】を使用します、OnTimeメソッドの書式は以下の通りです。
Application.OnTime(実行する時刻, 実行するプロシージャ名, 実行できる最終時刻を指定,プロシージャの設定)
というわけで少しわかりにくい部分もありますのでMicrosoftの解説を引用いたしますと
OnTime( EarliestTime, Procedure, LatestTime, Schedule )
名前 必須 / 省略可能 データ型 説明 EarliestTime 必須 バリアント型 (Variant) プロシージャを実行する時刻を指定します。 Procedure 必須 文字列型 (String) 実行するプロシージャ名を指定します。 LatestTime 省略可能 バリアント型 (Variant) プロシージャを実行できる最終時刻を指定します。たとえば、引数 LatestTime に、引数 EarliestTime で設定した値 + 30 を設定します。引数 EarliestTime に指定した時刻にはほかのプロシージャを実行しているため、Excel は待機、コピー、切り取り、または検索のいずれのモードでもないとします。その場合、Excel は実行中のプロシージャが終了するまで 30 秒間待ちます。30 秒以内に Excel が待機モードにならないとき、指定したプロシージャは実行されません。この引数を省略すると、Excel はプロシージャが実行できるまで待ちます。 Schedule 省略可能 バリアント型 (Variant) 新しい OnTime プロシージャを設定するには、 True を指定します。直前のプロシージャの設定を解除するには、 False を指定します。既定値は True です。
参照:Microsoft
つまり、引数のLatestTimeは、指定時間時に他のプロシージャーを実行中で呼び出したプロシージャーが実行できない場合何秒待ちますか?ということですね!
Application.OnTimeメソッドの使用例
さて、このOnTimeメソッドは実際どのように使用例を考えましたのでご紹介します!
使用例1:時間でお知らせ
1番オーソドックスかもしれませんが、12時になったらメッセージボックスを表示するプログラムです(^-^)
Sub OnTime() Application.OnTime TimeValue("12:00:00"), "sample" End Sub Sub sample() MsgBox "お昼ですよ~" End Sub
使用例2:秒数指定で実行
inputboxで指定した時間(秒数)後にプロシージャーを実行します。
Sub OnTime() inputtime = InputBox("何秒後に実行しますか?") Application.OnTime Now + TimeSerial(0, 0, inputtime), "sample" End Sub Sub sample() MsgBox "時間が経過しました!" End Sub
他にも使い道はいくらでもある
というわけで、OnTimeメソッドをご紹介しましたが他にもいくらでも使い道はあると思うんですよ。
Outlookと連携してメールの時間指定送信だとか、タイマーの代わりだとか、個人的にはメール関係とすごく相性がいいような気がしますので会社のツールにも応用しようかと思います(笑)
フォロー・チャンネル登録お願いします
VBA以外についてのブログはこちら↓
https://yb-log.com/■Twitterフォロー
Follow @taka_pc1027■YouTubeチャンネル登録
コメントを残す