Excel宏,如何确定日期是否已过去?

Hop*_*00b 2 excel vba excel-vba

请原谅问题的基本性,但我认为必须有一个简单,天真的解决方案,这是我无法找到的.

基本情况是,我有我们作为我们跟踪备份成功率的企业解决方案中使用的Excel工作簿,作为结果,我们拥有一批在第一列中的日期表,以及一些小宏做计算,根据日期是否过去.(主要是对于查看此工作表但不想要一堆空行的经理,因此宏可以隐藏或显示相应的行.)

这一直运作良好,直到昨天(新年快乐); 我假设因为宏正在进行字符串比较,而不是日期比较.(01/01/2013小于12/31/2012,当被视为字符串时.)

宏是在下面,问题基本上是有一种本地方式来比较VBA中的日期,或者我是否需要将日期从人类日期格式转换为yyyy/mm/dd第一,然后执行我的逻辑.(如果我确实需要这样做,基本的方式会很好 - 我尽可能避免使用Excel和VBA,所以就VBA而言,我的编码技巧非常有限.)

A2将是我们开始使用这个新版本的电子表格的第一个日期的单元格,并且A454是我将电子表格扩展到的最后日期,对应于今年年底.

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
Run Code Online (Sandbox Code Playgroud)

Joh*_*tos 11

试试这个cDate功能.

类似的东西:

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

所以,在你的例子中:

If cDate(cell.Value) >= Date Then
Run Code Online (Sandbox Code Playgroud)

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


S a*_*gba 5

我知道这与你问的有点不同,但这可能有一天会对某人有所帮助。如果在日期上添加了一个小时(2014 年 3 月 5 日上午 8:00:00)并且您想与您的日期进行比较,您可以:

'X 是您要比较的日期

x = CDate(x) 'formatting the date using the CDate function

x= Format(x, "MM/DD/YYYY") 'formatting the date by dropping the hour

x= CDate(x) 'formatting the date again 


If x <= Date Then
    ...
Run Code Online (Sandbox Code Playgroud)