Excel VBA:Timer関数を使用した3分間タイマー作成|分秒の表示

Excel VBAでTimer関数を使用し、カップヌードルの「3分間待ち時間タイマー」を作ります。



Homeに戻る > Excel 日付・時間のTipsへ

Timer関数とは、午前0時から経過した秒数を取得できる関数です。

タイマーは、「処理開始後の時間 - 処理開始前の時間」の秒数を判定することで作成できます。

3分間タイマーの場合、「処理開始後の時間 - 処理開始前の時間>=180」で処理終了になります。

ここではカップヌードルのタイマーですが、例えば作業分析の作業時間計測や機械停止時間を計測し、次々にセルに自動入力できるようにすれば、大幅に省力化できます。

問題は午前0時を過ぎた場合で、その場合0秒に戻るので、もしマイナスになるとプラスするような処理が必要です。

Timer関数の構文

Timer()

戻り値は単精度浮遊小数点型(Single)の数値です。

VBAのタイマーは「Excel:Windows APIを使用したタイマー - GetTickCountでミリ秒」も掲載しています参照してください。




Excel VBAでTimer関数を使用し3分間タイマーを作成

Excel実行画面

シートにコマンドボタンを挿入し、キャプションを「Start」にしています。

「Start」ボタンをクリックすると、D5に経過時間を表示します。



Excel VBA コードの解説

■ プライベートの変数を宣言

処理開始前の時間を格納する、プライベート変数 sttimeを宣言しています。


■ ExTimerStartプロシージャ

  1. Doループで経過時間を繰り返し判定します。
  2. 処理開始後の時間 - 処理開始前の時間を変数に格納します。
  3. 60で割り、分を計算します。
  4. D5セルに、経過時間を〇分〇秒の形式で表示します。
  5. DoEventsで表示を更新します。
  6. 経過時間が180以上か判定します。
  7. 180以上ならばメッセージを表示し、Doループを抜けます。

■ コマンドボタンのクリックイベント

  1. D5セルをクリアします。
  2. プライベート変数 sttimeに処理開始前の時間を格納します。
  3. ExTimerStartプロシージャを呼び出します。

Excel VBA コード

Option Explicit

'開始時間の保持用変数
Private sttime As Long

'タイマー開始
Private Sub ExTimerStart()
    Dim ln As Long
    Dim lm As Long
    
    Do
        '経過時間を算出
        ln = Timer - sttime
        lm = Int(ln / 60)
        '○分○○秒で表示
        Range("D5") = lm & "分" & Format(ln - lm * 60, "00") & "秒"
        DoEvents
        If ln >= 180 Then
            Beep
            MsgBox "3分経過しました。さあ、食べてください。"
            Exit Do
        End If
    Loop
    
End Sub

'スタートボタン
Private Sub CommandButton1_Click()
    Range("D5") = ""
    '開始時間
    sttime = Timer
    'タイマー開始
    ExTimerStart
End Sub




Excel実行結果

3分間、経過するとメッセージが表示されます。

待ち時間の設定や中止ボタン等を追加するとさらに便利です。



Homeに戻る > Excel 日付・時間のTipsへ

■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved