Excelmacros,如何确定一个date是否过去?

请原谅这个问题的基本性,但我认为必须有一个简单的,天真的解决scheme,这是我无法find的。

基本情况是,我有一个Excel工作簿,作为我们用于跟踪备份成功率的企业解决scheme,结果,我们有许多工作表,第一列中有date,还有一些小的macros用于计算,基于date是否过去。 (主要针对看这张表的pipe理者,不想要一堆空行,所以macros隐藏或显示相应的行)。

这一直工作到昨天(新年快乐); 我假设,因为macros正在做一个string比较,而不是date比较。 ( 01/01/2013小于12/31/2012日,当被视为string。)

macros是在下面,问题是如果有本地的方式来比较VBA中的date,或者如果我需要首先将date从人类date格式转换为yyyy/mm/dd ,然后执行我的逻辑。 (如果我确实需要这样做,一个基本的方法会很好 – 我尽可能地避免使用Excel和VBA,所以我的编程技能在VBA方面非常有限。)

A2将会是我们开始使用这个电子表格的新版本的第一个date的单元格,而A454将是我打算延长电子表格的最后一个date,对应于今年年底。

 Sub ShowAll() Dim cell As Range For Each cell In Range("A2:A454") cell.EntireRow.Hidden = False Next End Sub Sub RevealPast() Dim cell As Range For Each cell In Range("A2:A454") If cell.Value < Date Then cell.EntireRow.Hidden = False End If Next End Sub Sub HideFuture() Dim cell As Range For Each cell In Range("A2:A454") If cell.Value >= Date Then cell.EntireRow.Hidden = True End If Next End Sub 

尝试cDate函数。

一些沿线的东西:

 If CDate("02/01/2013") > Date (or Now() if you want today's date) Then ... 

所以,在你的例子中:

 If cDate(cell.Value) >= Date Then 

我希望我正确理解你的问题,并希望这有助于…