LEVEL 13 自動化への第一歩 上級
Lesson 099

時計マクロを作ってみる

練習用Excelファイル(マクロ有効) lesson099-practice.xlsm

練習用ファイルは、パソコンからダウンロードしてください。

時計マクロを作ってみる

前回は マクロの導入 に触れていただきました。今回は、ちょっと感動する 「時計マクロ」 を作りましょう。

Excel のセルに、リアルタイムで現在時刻を表示する ── つまり、セルが「1秒ごとに自動で更新される時計」になります。

これ、コピペするだけで完成します。所要時間 5分。

Excel ってこんなことまでできるんだ」と思っていただけたら、嬉しいです。


レッスンファイル 099 はExcelマクロファイルです

最初に1点だけ注意です。このレッスンファイルは Excelマクロファイル です。

おそらく、そのまま開こうとすると、赤い警告バーが表示されます。

警告バー
警告バー

これが出ると、マクロは完全に使えない状態となります。そのため、Excelマクロファイルのプロパティを開いてください。

Windowsのエクスプローラ上で lesson099-practice.xlsm ファイルを右クリックして「プロパティ」です。

プロパティ
プロパティ

セキュリティの項目に「許可する」にチェックを入れていただければ、Excelマクロが使えるようになります(黄色の警告バーは出てくると思うので、初回は Excelマクロ を有効にしてください)。

完成形のイメージ

ここからは、新規ブックで作成していく流れで説明していきます。

セル B2 に、

2026/05/25 10:30:42

のように、現在時刻が表示されます。そのまま放置していると、1秒ごとに数字が更新されていく

ストップウォッチや時計を別アプリで開かなくても、Excel 単体で時計 が動きます。会議用の進行表に組み込んだり、勉強の進捗管理に使ったり、応用は色々できます。

時計マクロの完成イメージ
時計マクロの完成イメージ


マクロのコード

前回 098 で学んだ 「開発タブ → Visual Basic → 標準モジュール」 までは同じ流れです。

Module1 の白い画面に、次のコードを そのままコピペ してください。

' ================================
'  リアルタイム時計(秒更新)
' ================================

Dim isRunning As Boolean  ' 動作フラグ

' ▼ 時計をスタートする
Sub StartClock()
    isRunning = True
    Call UpdateClock
End Sub

' ▼ 時計をストップする
Sub StopClock()
    isRunning = False
End Sub

' ▼ 時刻を更新して、1秒後に自分自身を再呼び出し
Sub UpdateClock()
    If Not isRunning Then Exit Sub

    ' ↓ ここのセル番地はお好みで変更してください
    Range("B2").Value = Format(Now, "yyyy/mm/dd hh:mm:ss")

    ' 1秒後に再実行を予約
    Application.OnTime Now + TimeValue("00:00:01"), "UpdateClock"
End Sub

長く見えますが、コードの 本体は3つの Sub だけ です。

ステップ1: StartClock :時計をスタート
ステップ2: StopClock :時計をストップ
ステップ3: UpdateClock :時刻を更新する本体(1秒ごとに自分を呼び出す)


ボタンを2つ配置する

前回と同じ手順で、シートにボタンを2つ配置します。

ステップ1: 開発タブ → 挿入 → ボタン → ドラッグで配置
ステップ2: 「マクロの登録」ダイアログで 「StartClock」 を選択 → OK
ステップ3: ボタンの上で右クリック →「テキストの編集」で 「スタート」 に変更

同じ手順で、もう1つボタンを作り、「StopClock」 を紐付けて、ボタン名を 「ストップ」 にします。

スタート/ストップボタンの配置
スタート/ストップボタンの配置


動きを試してみる

スタート」ボタンをクリックしてみてください。

セル B2 に 現在の日時 が表示され、1秒ごとに数字が更新 されていきます。秒の部分が「02, 03, 04...」と動いていくのが分かるはずです。

ストップ」ボタンを押すと、更新が止まります。再度スタートを押せば、また動き出します。

時計が動き出した
時計が動き出した

次の1秒
次の1秒

次の1秒
次の1秒

ここまで来たら、Excel が時計として動いている という、ちょっと不思議な感覚を味わってください。


コードを少し解説

3つの Sub が、お互いを呼び合って動いているのがポイントです。

StartClock

isRunning = True       ' 動作フラグをONに
Call UpdateClock       ' UpdateClock を呼び出す

「動かしますよ」のフラグを立てて、本体の UpdateClock を呼び出します。

UpdateClock(本体)

If Not isRunning Then Exit Sub                          ' フラグがOFFなら終了
Range("B2").Value = Format(Now, "yyyy/mm/dd hh:mm:ss")  ' 現在時刻を入れる
Application.OnTime Now + TimeValue("00:00:01"), "UpdateClock"  ' 1秒後に自分を再呼び出し

ここがマクロの面白いところ。自分自身を「1秒後に呼ぶ」 という指示を入れることで、永遠に動き続ける時計になります。

StopClock

isRunning = False      ' 動作フラグをOFFに

フラグを OFF にすると、次の UpdateClock が「フラグOFFだから終了」と判断して止まります。


ここに登場する「シリアル値」

Now という関数は、現在の日時を返す Excel の組み込み関数です。実はこの Now、レッスン005で学んだ シリアル値 で動いています。

Now の中身は、たとえば「46164.4380...」のような数字。

  • 整数部分(46164):日付(2026/5/25)
  • 小数部分(0.4380...):時刻(10時30分42秒)

Format(Now, "yyyy/mm/dd hh:mm:ss") で、このシリアル値を 人間が読める形式の文字列 に変換しています。

レッスン005で学んだ「日付は数字」「シリアル値」の話が、こんなところで活きてくる ── これが Excel の面白さです。


マクロが動いている間の注意

時計マクロが動いている間、Excel に他の作業をすると、1秒ごとに動作が一瞬中断 されることがあります。

実用というよりは「こんなこともできるんだ」という体験用のマクロです。実際に時計を見るなら、PC の時計を見るのが一番早い、というオチもあります。

ただ、「Application.OnTime で自分を呼び出す」という構造は、

  • 定期的にデータを更新する
  • 一定時間ごとにファイルをチェックする
  • バックアップを定期実行する

など、実務で使える応用範囲がたくさんある 構造です。今回の時計は、その入り口体験です。


まとめ

  • コピペするだけで動く 時計マクロ
  • 3つの Sub(StartClock / StopClock / UpdateClock)が協力して動く
  • Application.OnTime で「1秒後に自分を呼び出す」のがポイント
  • Now の中身は シリアル値(レッスン005と同じ仕組み)
  • 実用というより「Excel ってここまでできるんだ」体験

次回はいよいよ 100Excel完走 ! ここまで本当にお疲れさまでした。最後はちょっと特別な話をさせてください。


ショートカット

  • Visual Basic Editor を開く:[Alt] + [F11]
  • マクロのダイアログを開く:[Alt] + [F8]
次のLessonへ Lesson 100 100Excel完走!