Excel – Linux Home Server http://www.now.mfnet.ne.jp/~ozachin/wordpress Long Road Linux Fri, 29 Mar 2024 07:36:17 +0000 ja hourly 1 https://wordpress.org/?v=5.9.3 Excel版タイマー http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=402 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=402#respond Sun, 19 Jan 2020 07:56:53 +0000 http://www.now.mfnet.ne.jp/~ozachin/wordpress/?p=402 read more]]> Excel版のタイマーを作ってほしいとう要望がありました。

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

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

Dim dt As Date
Dim stf As Integer  'stop用フラグ

Private Sub CommandButton1_Click()
 stf = 0
 Call my_Procedure

End Sub

Private Sub CommandButton2_Click()
'Resetボタンで初期化
 dt = TimeSerial(Range("A1"), Range("B1"), Range("C1"))
 Me.TextBox1 = dt

End Sub

Private Sub CommandButton3_Click()
stf = 1
End Sub

Private Sub Label2_Click()

End Sub

Private Sub UserForm_Initialize()
'初期化
 dt = TimeSerial(Range("A1"), Range("B1"), Range("C1"))
 Me.TextBox1 = dt
 Me.Label2.Caption = dt

End Sub

Public Sub my_Procedure()
  Dim t_start As Double
  Dim t_next As Double
  Dim t_timer As Double

  t_start = Timer()
  t_next = t_start
  
  Do
   If t_next - t_start > Range("A1") * 3600 + Range("B1") * 60 + Range("C1") Then Exit Do
   If stf = 1 Then Exit Do  'stopボタンが押されたかどうか

   t_timer = Timer() - t_next
    If t_timer > 1 Then
       t_next = Timer()
       dt = DateAdd("s", "-1", dt)
       Me.TextBox1 = dt
       Range("A4") = dt
   End If
   DoEvents
  Loop

End Sub

 

]]>
http://www.now.mfnet.ne.jp/~ozachin/wordpress/?feed=rss2&p=402 0