【发布时间】:2019-03-28 14:00:25
【问题描述】:
我正在尝试遍历“G”列中的到期日期,并将它们与今天的日期进行比较。每当我运行它时,代码都会循环 363 次,但它会在 ExpirationDate = Cells(x, "G").Value 处停止,并给我一个类型不匹配的错误。
“G”列中的所有单元格都标记为日期,ExpirationDate 也是如此。我可以看到代码始终停止的行与成功通过代码的行之间没有区别。
For x = 13 To numrows
reminderrows = Worksheets("Reminders").Cells(Rows.Count, "A").End(xlUp).Row
expiredrows = Worksheets("Expired").Cells(Rows.Count, "A").End(xlUp).Row
Worksheets("Training Log Test").Activate
ExpirationDate = Cells(x, "G").Value
If ExpirationDate > today And ExpirationDate <= ninetydays Then
Rows(x).Copy
Worksheets("Reminders").Activate
Worksheets("Reminders").Cells(reminderrows + 1, 1).Select
ActiveSheet.Paste
ElseIf today >= ExpirationDate Then
Rows(x).Copy
Worksheets("Expired").Activate
Worksheets("Expired").Cells(expiredrows + 1, 1).Select
ActiveSheet.Paste
Else
End If
Next
End Sub
【问题讨论】:
-
出现错误时单元格中的实际值是多少?你试过
ExpirationDate = CDate(Cells(x, "G").Value)吗? -
请显示您声明的变量。您使用的是序列日期还是仅日期?您正在处理的行数是多少?
-
标记为日期并不意味着是日期。经常使用文本格式的日期或来自不是系统区域设置的区域设置的日期等看到这一点。
-
您可以使用IsDate()函数检查单元格中的值是否为日期。这将帮助您排除故障。
-
Debug.Print TypeName(ExpirationDate)输出Date还是String?是否在任何地方声明?使用显式类型?如果是这样,请注意应将单元格值读入Variant,以免在尝试将工作表错误值(例如#REF!)读入Date时出现类型不匹配错误、String或任何其他类型。