【Excel VBA】もう時計は見なくてOK!「一定時間おき」に自動実行するコードと活用術

【業務効率化】VBA
スポンサーリンク

「Application.OnTime」で時間をコントロールする

Excel VBAには、指定した時刻にプログラム(プロシージャ)を実行するApplication.OnTimeという非常に便利なメソッドがあります。

これを使えば、例えば「10分おきにファイルを保存する」あるいは「毎朝9時に昨日の集計を行う」といった設定も簡単に実現できます。

【業務効率化】VBAの記事を見る 

【コピペでOK】一定時間おきに実行するコード

以下のコードをVBAのエディタ(Alt + F11)に貼り付けてみてください。今回は「5分おきにメッセージを出す」というシンプルな例です。

Dim NextTime As Date ' 次の実行時刻を保持する変数

' 自動実行を開始するボタン用
Sub StartTimer()
    ' 現在時刻の5分後に設定(時, 分, 秒)
    NextTime = Now + TimeSerial(0, 5, 0)
   
    ' 指定した時刻に「MyProcess」を実行するよう予約
    Application.OnTime NextTime, "MyProcess"
   
    MsgBox "5分おきの自動実行を開始しました。"
End Sub

' 実際に動かしたい処理
Sub MyProcess()
    ' ここに実行したい内容を書く(例:セルに現在時刻を入力)
    Cells(1, 1).Value = "最終更新: " & Now
   
    ' 【重要】自分自身を再度予約することで「繰り返し」にする
    NextTime = Now + TimeSerial(0, 5, 0)
    Application.OnTime NextTime, "MyProcess"
End Sub

' 自動実行を止めたいとき用
Sub StopTimer()
    On Error Resume Next
    ' 予約していた時刻の実行を取り消す
    Application.OnTime NextTime, "MyProcess", , False
    MsgBox "自動実行を停止しました。"
End Sub

まずはTimeSerial(0, 0, 5)にして、5秒ごとの自動実行で試していただくと実際の挙動を手早く確認できると思います。

使う時の注意点

  • Excelを開いておく必要がある: PCがスリープ状態だったり、Excelを閉じていたりすると動きません。
  • 処理の止め忘れに注意: 終了するときは、必ずStopTimerを実行するか、ファイルを閉じる設定(Workbook_BeforeClose)に組み込むのがおすすめです。

「自分が操作していなくても、PCが勝手に作業を進めてくれる」というのは、VBAを学ぶ大きな醍醐味の1つとなります。まずはこのコードをコピーして、Excelが勝手に動く快適さをぜひ体感してみてください!

【業務効率化】VBAの記事を見る 


VBAを独学で学び、業務自動化に5年以上携わってきた私が、「本当に実務で役立った!」と感じた2冊を紹介します。 もう本選びで失敗したくない方は、よければ参考にしてみてください。

この記事を書いた人
ぐー

手取り15万円の会社員でしたが、年間100万円以上節約していました。
株式投資で年間360万円以上投資し、iDeCoも併用しています。
総資産はアッパーマス層に到達しました。
資格は日商簿記3級を持っています。

このブログでは、私が実践してきた節約術やリアルな資産運用、生産性を高めるITスキルについて発信しています。

生活を豊かにするため、高配当株投資で年間配当金60万円をめざしています。
現在の年間配当金は30万円ほどです。

ゲーム・漫画・アニメなどが好きです。
一緒に資産形成をがんばりましょう!
よろしくお願いします!

ぐーをフォローする
【業務効率化】VBAITスキル
スポンサーリンク
ぐーをフォローする

コメント

タイトルとURLをコピーしました