我有部分代码:
o = Workbooks(repfile).Worksheets(1).Range("b:b").Cells.SpecialCells(xlCellTypeConstants).Count
For k = o To 2 Step -1
dte = CDate(Replace(Cells(k, 8), ".", "/"))
Cells(k, 8) = dte
If Cells(k, 8) < udate And Cells(k, 8) > udate2 Then
Rows(k).EntireRow.Delete
End If
Next
在代码的前几部分中,用户指定了他想要获取报告的日期(udate和udate2) 例如。我指定我只想查看日期在09/01/2017和09/30/2017之间的行(mm / dd / yyyy),其余的将被删除。 但是这种比较不起作用。 当我在IF行中创建一个断点来检查我看到的变量时:
Cells(k,8)= 11/9/2017 udate= 9/1/2017 udate2= 9/30/2017
所以根据我的代码,这行应该被删除,但事实并非如此。 我已经尝试了一些其他选项,如:
Cells(k, 8) < DateValue(udate) And Cells(k, 8) > DateValue(udate2)
或
Cells(k, 8).value < DateValue(udate) And Cells(k, 8).value > DateValue(udate2)
或
CDate(Cells(k, 8)) < CDate(udate) And Cells(k, 8) > CDate(udate2)
还有一些,但没有任何作用。
答案 0 :(得分:1)
我认为你的逻辑不正确:
If Cells(k, 8) < udate And Cells(k, 8) > udate2 Then
if #11/9/2017# < #9/1/2017# And #11/9/2017# > #9/30/2017#
将评估为false。
也许你想要:
If Cells(k, 8) < udate Or Cells(k, 8) > udate2 Then