2015-02-24 46 views
0

我目前有一個充當倒數計時器的代碼。我沒有使用計時器功能或只是使用「CountUp」部分來倒計時的原因是因爲我希望它自行調整(另一個代碼可能正在運行,導致其他倒計數方法的計算時間會發生變化)很長)。只要代碼達到零,就會導致錯誤:應用程序定義的錯誤或對象定義的錯誤。達到0時Excel倒計時代碼錯誤

Sub CountupONE() 
Dim CountDownONE As Date 

CountDownONE = Now + TimeValue("00:00:01") 

Application.OnTime CountDownONE, "RealcountONE" 
End Sub 


Sub RealcountONE() 
Dim countONE As Date 
Dim counterONE As Date 

counterONE = Now - Sheets("Sheet1").Range("$A$11").Value 
countONE = Sheets("Sheet1").Range("$B$8").Value - counterONE 
'MsgBox countONE 
Sheets("Sheet1").Range("$C$8") = countONE 
'Sheets("Sheet1").[C8] = TimeValue("12:00:00 AM") 

If countONE = TimeValue("12:00:00 AM") Then 

Beep 
[C11].Value = Now 
[C11].NumberFormat = "h:mm:ss AM/PM" 
Application.Speech.Speak ("Platen one is done") 
Call BeginGraphing 

Exit Sub 

End If 

Call CountupONE 
End Sub 
+0

哪一行導致錯誤? – 2015-02-24 18:02:07

+0

對不起,它到達時發生錯誤:表格(「Sheet1」)。範圍(「$ C $ 8」)= countONE – 2015-02-24 18:03:35

+1

B8和A11中有什麼?你可以debug.print? – 2015-02-24 18:15:55

回答

1

這應該解決這個問題:

Sheets("Sheet1").Range("$C$8").Value = TimeValue(CStr(countONE)) 

我不知道爲什麼...這是可能的將原始Date放入單元格中:[A1].Value = CDate(Now),或者甚至不會產生錯誤:

countOne = Now() 
Range("A1").Value = countOne 

當你的情況出現錯誤時,countOne的值是:1785年3月5日[和某個時間值部分]。這有一個相當於-41938的Long。我不知道爲什麼這會導致一個錯誤,我不會指望它。

在任何情況下該方法我建議第一脅迫countOneString數據類型,然後拉出該值的時間

+0

這完美謝謝你! – 2015-02-24 18:45:43

+0

我希望我知道爲什麼原始代碼導致錯誤。我當然不會期望它:( – 2015-02-24 18:50:39

1

12:00:20 AM是不是在你的情況date data type

A11B8的內容應該以mm/dd/yyyy的形式爲您的代碼通過。你可以添加時間。

嘗試02/27/2015它會通過!

編輯:你可以用類似下面的行上班時間:

If Format(countONE, "hh:mm:ss AM/PM") = "12:00:00 AM" 
'do here 
End if 
+0

有沒有辦法讓這個工作的時間? – 2015-02-24 18:32:45

+0

沒關係,我想我的理解......我會在幾分鐘內搞砸它。 – 2015-02-24 18:35:48

+1

看看我的回答 – 2015-02-24 18:41:50