excel - VBA日期比较不起作用
问题描述
我有部分代码:
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)
还有一些,但没有任何效果。
解决方案
我认为您的逻辑不正确:
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#
将评估为假。
也许你想要:
If Cells(k, 8) < udate Or Cells(k, 8) > udate2 Then
推荐阅读
- javascript - 使用 iText 在 pdf 的特定位置上盖章
- python - 在 Pygame 中继续之前等待 keydown
- sql - SQL:如何检查列中是否包含字母
- java - 测试用例java中的骆驼确认
- cluster-analysis - Mahout 聚类 - 单个聚类中的所有文本向量 - 为什么?
- javascript - 您应该在全局范围内使用“var”还是“let”?
- angular - 如何在 Angular 6 中更新 Bootstrap?
- javascript - JavaScript中的null比较应该使用哪种方式
- angular - 带有对象的复杂 Typescript 接口
- mysql - 设置默认值为子查询输出