2017-06-13 8 views
1

カウントダウンマクロを学習しようとしていて、Jerry Beaucaireのウェブサイトからこのファイルをダウンロードしました。ありがとう、ジェリー! 私は少しそれを微調整しました。 0から無限の数値までをカウントするのではなく、C列に入力した数値から0までの値をカウントダウンするようにしましたが、数値がゼロになるとエラーが発生します。このエラーを修正するにはどうすればよいですか?そして、数字が0になったら、列Aスイッチのボタンを「DOWN」に戻すにはどうすればよいですか?数値が0になったときに複数のカウントダウンタイマーエラーが発生する

Dim CountDown As Date 

Sub Timer() 
DisableTimer 
CountDown = Now + TimeValue("00:00:01") 
Application.OnTime CountDown, "Reset" 
End Sub 

Sub Reset() 
Dim Counter As Range 
Application.ScreenUpdating = False 
Application.EnableEvents = False 

If Evaluate("COUNT(B2:B5)") = 0 Then 
    Call DisableTimer 
Else 
    For Each Counter In ThisWorkbook.Sheets("Sheet1").Range("B2:B5") 
     If Not IsEmpty(Counter) Then Counter = Counter - TimeValue("00:00:01") 
    Next Counter 
    Call Timer 
End If 

Application.ScreenUpdating = True 
Application.EnableEvents = True 
End Sub 

Sub DisableTimer() 
On Error Resume Next 

Application.OnTime EarliestTime:=CountDown, Procedure:="Reset", Schedule:=False 

End Sub 

Source File

+0

Excelではそのようなものとして、負の時間がありませんが。ゼロに達すると、時間の値から別の秒を引くことはできません。 – Jeeped

+0

数字がゼロに達したときにカウントダウンを停止し、エラーメッセージが表示されないようにします。また、数字がゼロになったときに自動的にスイッチをOFFに戻したいと思っています。それ、どうやったら出来るの? – voltaren

+0

セルの値が1秒未満の場合は、セルの値から秒を減算しないでください。 – Jeeped

答えて

0

この置き換えます。これにより

If Not IsEmpty(Counter) Then Counter = Counter - TimeValue("00:00:01") 

If Counter > TimeValue("00:00:01") Then 
    Counter = Counter - TimeValue("00:00:01") 
Else 
    Counter = "" 
End If 
+0

ありがとうございました! – voltaren

関連する問題