【发布时间】:2018-04-18 20:25:41
【问题描述】:
我正在编写一个自动检查单元格(在 K 列中)是否包含日期的代码。只有当 K 列不包含日期并且 L 列中的日期超过 30 天时,它才会给出错误。
我发现我的代码有效,但并非适用于所有日期。所以我Debug.print 看到他只是忽略了不满足if 要求的事实。我从来没有经历过。
这是代码(在它下面你会找到调试)
Aantal = 0
i = 0
LastRow = 0
k = 0
LastRow = ThisWorkbook.Sheets("Acknowledgements follow up").Range("A1").End(xlDown).Row
'For i = 2 To LastRow
For i = 22214 To 22222
Debug.Print ActiveWorkbook.Sheets("Acknowledgements follow up").Range("L" & i).Value & " " & ActiveWorkbook.Sheets("Acknowledgements follow up").Range("K" & i) + 30 & " "; Date & vbCrLf
If ActiveWorkbook.Sheets("Acknowledgements follow up").Range("L" & i).Value = "" And ActiveWorkbook.Sheets("Acknowledgements follow up").Range("K" & i) + 30 > Date Then
Aantal = Aantal + 1
MsgString = MsgString & i & " / "
End If
Next i
If MsgString <> "" Then MsgString = Left(MsgString, Len(MsgString) - 3)
If Aantal > 1 Then
MsgBoxAnswer = MsgBox("There are " & Aantal & " dates missing in the acknowlegement sheet" & vbCrLf _
& "The missing dates are on rows " & MsgString, vbOKOnly + vbExclamation, "Missing dates")
End If
If Aantal = 1 Then
MsgBoxAnswer = MsgBox("There is " & Aantal & " date missing in the acknowlegement sheet" & vbCrLf _
& "The missing date is on row " & MsgString, vbOKOnly + vbExclamation, "Missing dates")
End If
我发现单元格 22217 包含一个他应该给出错误的案例。但他没有,整个文档包含超过 29000 行。它给了我 58 个错误,但实际上还有更多。
这是我得到的调试信息(检查日期是否为空(L 列)/K 列 + 30 天/今天)
05-08-13 01-09-13 06-11-17
05-08-13 01-09-13 06-11-17
05-08-13 01-09-13 06-11-17
01-09-13 06-11-1705-08-13 04-09-13 06-11-17
06-08-13 04-09-13 06-11-17
05-08-13 04-09-13 06-11-17
05-08-13 04-09-13 06-11-17
30-12-13 04-09-13 06-11-17
如您所见,它识别出第 22217 行为空且日期超过 30 天。所以应该触发。我发现是这条线不能正常工作:ActiveWorkbook.Sheets("Acknowledgements follow up").Range("K" & i) + 30 > Date
有什么想法吗? 谢谢! 川流
【问题讨论】:
-
这段代码所做的只是检查单元格中是否有日期???
-
粘贴出了点问题 :) 我修好了
-
@cxw 检查 L 列是否为空以及 K 列是否超过 30 天。如果满足这两个要求,它应该会弹出一个窗口。由于某种原因它没有。我已经在我的描述中修复了它。谢谢指出!
-
因为你没有 MsgBox MsgString
-
KawaRu:测试
Kx + 30 > Date正在测试 K 列中的值是否在过去 30 天内在内,而不是在 超过 30 天。Kx < (Date-30)将测试超过 30 天。你要哪个?
标签: vba excel date if-statement