我有点迷失..我正在尝试创建一个宏来比较列AH的单元格和列AH的单元格(BOTH COLUMNS包含DATES),并根据结果,它将打印文本到列AI的细胞。代码在下面..每次我运行它,它说错误13-类型不匹配,它突出显示行" FirstDate = Cells(RowNumber,33)"。能帮我解决这个问题吗?
Sub Dates()
Sheets("1").Select
Dim Result As Long, RowNumber As Long
Dim FirstDate As Date, SecondDate As Date
RowNumber = 2
Do Until Cells(RowNumber, 2) = ""
FirstDate = Cells(RowNumber, 33)
SecondDate = Cells(RowNumber, 34)
Result = DateDiff("n", FirstDate, SecondDate)
If Result <= 30 Then
Cells(RowNumber, 35) = "On Time"
ElseIf Result > 30 Then
Cells(RowNumber, 35) = "Late"
End If
RowNumber = RowNumber + 1
Loop
End Sub
答案 0 :(得分:0)
可能的原因是Cells(RowNumber,33)中的值不是日期。 Excel将日期存储为数字。将Numberformat更改为“General”。如果您在单元格中看到一个数字,那么它就是一个日期。如果你看到文字是文字。如果文本看起来像日期,则Excel可能能够将其强制转换为正确的日期(表示数字)。试试FirstDate = Cdate(Cells(RowNumber, 33).Value)
。
如果将单元格的数字格式设置为Date
,则可以输入短日期(如区域设置中所定义),Excel会将其记录为实际日期(表示为数字)。将日期记录为“真实”日期而不是您可以将其视为日期更好。
反直观的?这是Excel。 : - )