Have-Stone

エクセル版タイマー

Access VBAに先立ち公開します。

Excel版のタイマーを作ってほしいとう要望がありました。

連載途中ですが先に公開します。
Access版と同様の機能を持たせました。

利用する関数はAccess版と同じです。
ただし、タイマーイベントは使えないので
Timer()関数で経過時間を判定します。
画面例とコードは以下の通りです。

スタート後、ストップボタンを押したところ

コードは以下の通りです

  1. Dim stf As Integer 'stop用フラグ
  2. Private Sub CommandButton1_Click()
  3.  stf = 0
  4.  Call my_Procedure
  5. End Sub
  6. Private Sub CommandButton2_Click()
  7. 'Resetボタンで初期化
  8.  dt = TimeSerial(Range("A1"), Range("B1"), Range("C1"))
  9.  Me.TextBox1 = dt
  10. End Sub
  11. Private Sub CommandButton3_Click()
  12. stf = 1
  13. End Sub
  14. Private Sub Label2_Click()
  15. End Sub
  16. Private Sub UserForm_Initialize()
  17. '初期化
  18.  dt = TimeSerial(Range("A1"), Range("B1"), Range("C1"))
  19.  Me.TextBox1 = dt
  20.  Me.Label2.Caption = dt
  21. End Sub
  22. Public Sub my_Procedure()
  23.   Dim t_start As Double
  24.   Dim t_next As Double
  25.   Dim t_timer As Double
  26.   t_start = Timer()
  27.   t_next = t_start
  28.   
  29.   Do
  30.    If t_next - t_start > Range("A1") * 3600 + Range("B1") * 60 + Range("C1") Then Exit Do
  31.    If stf = 1 Then Exit Do 'stopボタンが押されたかどうか
  32.    t_timer = Timer() - t_next
  33.     If t_timer > 1 Then
  34.        t_next = Timer()
  35.        dt = DateAdd("s", "-1", dt)
  36.        Me.TextBox1 = dt
  37.        Range("A4") = dt
  38.    End If
  39.    DoEvents
  40.   Loop
  41. End Sub
update:2024.03.30