【VBAリファレンス|実務向け】Excel VBAで実現する「簡易時計」|OnTimeメソッド活用術

スポンサーリンク

導入:なぜExcelで時計を作るのか?

業務中、Excelで長時間作業をしていると「今、何時だろう?」と画面を切り替えて時計を確認することがありますよね。Excel VBAの「OnTimeメソッド」を使えば、Excel上に時計を表示させ、作業しながら時刻を把握することができます。このテクニックを身につけると、指定した時間間隔でマクロを自動実行する「スケジューリング」の基礎が自然と習得できます。

基礎知識:OnTimeメソッドとは?

VBAにおける「OnTimeメソッド」は、指定した時刻にプロシージャ(マクロ)を呼び出すための強力な機能です。いわば「目覚まし時計」をセットするようなものです。今回のサンプルでは、1分ごとに自分自身を再帰的に呼び出すことで、擬似的に時計のような動作を実現します。

実装の仕組み

1. 現在の時刻から1分後の時間を計算して変数に格納します。
2. セルに現在時刻を書き込みます。
3. Application.OnTimeメソッドを使って、1分後に同じマクロが動くよう予約を入れます。
これを繰り返すことで、Excelが起動している限り、常に最新の時刻が表示され続けます。

サンプルプログラム

以下のコードを標準モジュールに貼り付けて実行してください。A1セルに現在の時刻が表示され、1分ごとに更新されます。

Sub ShowClock()
‘ 次に実行する時刻を計算(現在時刻+1分)
Dim nextTime As Date
nextTime = Now + TimeValue(“00:01:00”)

‘ セルA1に現在時刻を表示
Range(“A1”).Value = Now

‘ セルの幅を自動調整して見やすくする
Columns(“A”).AutoFit

‘ 1分後に自分自身を再度呼び出すよう予約
Application.OnTime nextTime, “ShowClock”
End Sub

‘ — 停止用マクロ —
Sub StopClock()
‘ 予約されているマクロをキャンセルする
On Error Resume Next
Application.OnTime EarliestTime:=Now + TimeValue(“00:01:00″), _
Procedure:=”ShowClock”, Schedule:=False
MsgBox “時計を停止しました。”
End Sub

応用・注意点:現場で役立つアドバイス

1. 停止のタイミングに注意
OnTimeメソッドで予約を入れると、Excelを閉じるまでバックグラウンドで動き続けます。停止用マクロを用意するか、ブックを閉じるイベント(Workbook_BeforeClose)で必ずキャンセル処理を入れる癖をつけましょう。そうしないと、ファイルを閉じた後に「マクロが見つかりません」というエラーが発生する原因になります。

2. 精度について
この方法は「正確な時刻」を保証するものではありません。あくまでVBAの処理サイクルを利用した簡易的なものです。厳密な時刻同期が必要な業務には向きませんが、ちょっとした進捗確認や、長時間のバッチ処理を監視する際の簡易インジケーターとしては非常に有用です。

3. セル表示の工夫
表示形式(セルの書式設定)で「h:mm:ss」と設定しておくと、より時計らしい見た目になります。ぜひ試してみてください。

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