运行时错误13 – date不匹配

狂热的读者,这里第一次海报。 我有一个从网上获得的大部分macros,然后做了一些调整。 它的目的是对已经过了一定时间的单元格进行颜色编码。 它工作得很好,但现在我得到一个“types不匹配”的错误。 读“这是错误的地方”的行是我得到的不匹配。 我感到困惑,因为它工作得很好。 我不是一个经验丰富的程序员,但我只是尝试排除故障。 我已经看遍了networking,不能find我的问题的具体答案。

另外,如果你们中的任何一个人愿意的话,我将不胜感激你的build议,就是如何让这个代码只在工作簿启动时运行,而不是定期的,因为它现在已经设置好了。这个代码并不放在工作表中,但在一个Module.I提到这一点,因为我不知道多less实际的差异,可以使任何帮助表示赞赏,谢谢!

Public TimeToRun As Date Sub Auto_Open() Call ScheduleCompareTime End Sub Sub ScheduleCompareTime() TimeToRun = Now + TimeValue("00:00:10") Application.OnTime TimeToRun, "CompareTimeStamp" End Sub Sub CompareTimeStamp() Dim rgTimeStamp As Range Dim rdTimeStamp As Range Dim i As Long Dim j As Long Dim MyNow As Date Dim TimeStamp As Date, TimeStampp As Date Set rgTimeStamp = Range("c1:c500") Set rdTimeStamp = Range("H1:h500") For i = 1 To rgTimeStamp.Rows.Count If Not rgTimeStamp.Cells(i, 1) < 1 Then 'don't run for an empty cell MyNow = CDate(Now - TimeSerial(0, 0, 0)) 'time instantly TimeStamp = CDate(rgTimeStamp.Cells(i, 1)) 'THIS IS WHERE THE ERROR IS!! If TimeStamp < MyNow Then 'if it's old at all rgTimeStamp.Cells(i, 1).Interior.ColorIndex = 3 'make fill colour red End If End If Next For j = 1 To rdTimeStamp.Rows.Count If Not rdTimeStamp.Cells(j, 1) < 1 Then MyNow = CDate(Now - TimeSerial(0, 0, 0)) TimeStampp = CDate(rdTimeStamp.Cells(j, 1)) If TimeStampp < MyNow Then rdTimeStamp.Cells(j, 1).Interior.ColorIndex = 3 End If End If 'closes If Not Next Call ScheduleCompareTime 'begins the scheduler again End Sub Sub auto_close() 'turn the scheduler off so you can close workbook Application.OnTime TimeToRun, "CompareTimeStamp", , False End Sub 

您可能有Excel中无法转换为date的一个或多个单元格中的数据。 你可以通过添加一些简单的检查来解决这个问题:

 '.... beginning of your code If Not rgTimeStamp.Cells(i, 1) < 1 Then 'don't run for an empty cell MyNow = CDate(Now - TimeSerial(0, 0, 0)) 'time instantly If IsDate(rgTimeStamp.Cells(i, 1)) = False Then MsgBox "Invalid date found in cell " & rgTimeStamp.Cells(i, 1).Address(False, False) Exit Sub End If TimeStamp = CDate(rgTimeStamp.Cells(i, 1)) 'THIS IS WHERE THE ERROR IS!! If TimeStamp < MyNow Then 'if it's old at all rgTimeStamp.Cells(i, 1).Interior.ColorIndex = 3 'make fill colour red End If End If '... rest of your code 

如果你只想让代码在启动时运行,那么将Sub Auto_Open改为:

 Sub Auto_Open() Call CompareTimeStamp End Sub