【Excel VBA】リアルタイムで経過時間を表示するタイマー機能の作り方【1秒ごと更新】

VBA

Excelで「作業時間を自動で測りたい」「1秒単位で経過時間を表示したい」と思ったことはありませんか?
仕事中、時間を測定して作業者にフィードバックするシステムが作りたいな、と思ったのでchatgptに聞いてみた。

今回は、Excelファイルを開いた瞬間からリアルタイムに秒数をカウントしてシート上に表示する方法を画像付きで解説します!


🧩 完成イメージ

💡 A1セルに「経過時間: 9 秒」などとリアルタイムに表示されます。


🛠️ Step 1:VBAでタイマー用のコードを記述しよう

🔧 まずは標準モジュールにコードを追加します。

📌 操作手順:

  1. Excelで Alt + F11 を押してVBAエディターを起動
  2. メニューで「挿入」→「標準モジュール」を選択
  3. 以下のコードをコピペ

Public startTime As Date
Public nextUpdateTime As Date
Public timerRunning As Boolean

Sub StartTimer()
startTime = Now
timerRunning = True
Call UpdateTimer
End Sub

Sub UpdateTimer()
If Not timerRunning Then Exit Sub
Dim elapsed As Double
elapsed = (Now - startTime) * 86400 ' 秒に換算
Sheet1.Range("A1").Value = "経過時間: " & Format(elapsed, "0") & " 秒"
nextUpdateTime = Now + TimeSerial(0, 0, 1)
Application.OnTime nextUpdateTime, "UpdateTimer"
End Sub

Sub StopTimer()
On Error Resume Next
timerRunning = False
Application.OnTime nextUpdateTime, "UpdateTimer", , False
End Sub


🧠 Point:Sheet1.Range("A1")の意味

ここでの「Sheet1」は、シートのコードネームです。
表示名ではなく、VBEでシートを選択したときの (Sheet1) という名前を指しています。

vbaコピーする編集するSheet1.Range("A1")

👇表示先を別シートにしたい場合は、次のように名前で指定できます:

vbaコピーする編集するWorksheets("時間表示").Range("A1")

🛠️ Step 2:Excelブックを開いたときにタイマーを自動で開始

📌 操作手順:

  1. VBAエディタ左側の「ThisWorkbook」をダブルクリック
  2. 次のコードを貼り付けます
Private Sub Workbook_Open()
    StartTimer
End Sub

▶️ Step 3:ブックを開いてタイマーが動くか確認!

Excelファイルを一度閉じてから再度開いてみましょう。

✅ A1セルに 経過時間: ○○ 秒 のように、秒数が増えていくのが確認できれば成功!


🛑 測定を止めたいときは?

手動でタイマーを停止したい場合は、以下のマクロを実行します。

📌 操作手順:

  1. Alt + F8 を押して「マクロの一覧」を開く
  2. StopTimer を選択 → 実行

または、自分でスイッチを実装し、ボタンを押して終わらせるのもありです。


🎯 応用アイデア

このリアルタイムタイマー機能は、さまざまな用途に応用可能です:

  • 作業ログの自動記録
  • 作業時間の可視化ツール
  • 時間制限付きの入力チェックツール

✅ まとめ

機能内容
自動開始ブック起動時に計測スタート
リアルタイム表示1秒ごとに経過時間をシートに表示
停止可能StopTimerマクロで終了できる

Excelの機能にVBAをプラスすることで、ちょっとしたタイマーアプリのような便利機能が簡単に実装できます!

コメント

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