2016-02-29 130 views
0

这只是我写的一个vba代码的一部分,简单的日期比较不起作用。我有一张包含大量数据的工作表,vba代码创建一个数据透视表。代码运行良好,并过滤掉所有过去的日期,但由于某种原因(今天是2月29日),它不会过滤掉(2月3日和2月4日)。它过滤掉所有其他2月日期,但它只是这两个日期。任何人都知道什么是错的?日期比较不正确

With ActiveSheet.PivotTables("pivottable1").PivotFields("issuedate") 
    For Each pi In .PivotItems 
     If pi < Date Then 
      pi.Visible = False 
     End If 
    Next pi 
End With 
+0

http://stackoverflow.com/help/how-to-ask按照此问题先问一个问题 – SkyWalker

+0

我曾经有一个类似的问题来自SQL Server的日期。问题在于Excel不理解来自SQL Server的'datetime'字段,因为它包含毫秒。所以日期格式是'2015-02-04 00:00:00.000'。 Excel无法理解这一点。但是,如果您将其更改为“2015-02-04 00:00:00”,那么它就可以工作。这可能是问题吗? – Ralph

+0

你也可以使用函数DateDiff。 –

回答

0

您是否检查过列类型是日期而不是字符串?也许尝试CDate(pi)?

如果这不起作用,请发布不工作的日期 - 可能通过执行Debug.print(pi)。

+0

它的工作。谢谢! –

+0

'Typename(Pi)'必须是'date'。另外,不要使用像Pi这样的混淆名称的变量,它应该已经是3.1415,但奇怪的是不是...... –