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)
我希望我能正确理解你的问题并希望这有助于......
我知道这与你问的有点不同,但这可能有一天会对某人有所帮助。如果在日期上添加了一个小时(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)