在VBA中比较两次

时间:2015-01-29 21:57:39

标签: excel-vba datetime vba excel

我想知道日期/时间的“时间”部分是否在午夜到早上6点之间。

If Range("J" & RowCount) > #12:00:01 AM# And Range("J" & RowCount) < #6:00:00 AM# Then

我做错了什么?范围(“J”和RowCount)格式为“常规”,如下所示:

1/27/2015 2:00:00.000000 AM

2 个答案:

答案 0 :(得分:0)

我在单元格A1中添加了日期/时间并使用了以下代码。

Sub test()
    If Hour(Range("A1")) >= 0 And Hour(Range("A1")) < 6 Then
        Debug.Print "yeah"
    Else
        Debug.Print "nope"
    End If
End Sub

不是检查整个日期/时间(在Excel中等于42,031.08333),而是使用内置的HOUR函数来查看小时。

适应您的代码行:

If Hour(Range("J" & RowCount)) >= 0 And Hour(Range("J" & RowCount)) < 6 Then

答案 1 :(得分:0)

如果您想查看时间是否在午夜和上午6:00之间,您只需使用以下代码

If Hour(Range("A1")) < 6 Then
MsgBox "Time is between midnight and 6:00AM"
End If

您不必检查它是否在午夜之后,因为小时数记录为1-24。如果要检查整列,也可以将此公式直接放入Excel工作表中。

如果你想比较两个特定时间,包括彼此,这将有所帮助。 (请注意,您可以在Excel中执行此操作,而无需使用VBA进行一些更改)

Dim min As Date, max As Date, test As Date
min = TimeValue("12:00:01 AM")
max = TimeValue("6:00:02 AM")
test = TimeValue("1/27/2015 2:00:00 AM") 'replace with your range
test = test - Fix(test) 'this will remove the date portion of the time

If test >= min And test <= max Then
MsgBox test & " is between(inclusive) " & min & " and " & max
Else
MsgBox test & " is NOT between(inclusive) " & min & " and " & max
End If