这个例子教你如何比较日期和时间在Excel VBA。日期和时间存储在Excel中的数字,自1月0日,1900年你所看到的取决于数字格式计数的天数。

1.在A列输入一些数字

Numbers

2.这些数字是日期。这是不用担心的日期格式输入一些日期的完美方式。更改格式设置为日期(右键单击列标题,设置单元格格式并选择日期)。

结果:

Dates

注:日期是美国格式。月第一,二日。这种类型的格式取决于您的Windows区域设置。

将工作表上的一个命令按钮并添加以下代码行:

3.声明类型整数的变量i。

Dim i As Integer

4.添加一个For Next循环。

For i = 1 To 5

Next i

5.日期函数返回没有时间的当前日期。下面的代码行添加到环,以突出显示包含当前日期(2020年3月13日)的所有单元格。

If Cells(i, 1).Value = Date Then Cells(i, 1).Font.Color = vbRed

结果:

Dates Equal To

6.将以下代码行添加到循环,以突出显示所有的日期早于2019年4月19日。

If Cells(i, 1).Value < DateValue("April 19, 2019") Then Cells(i, 1).Font.Color = vbRed

结果:

Dates Earlier Than

7.但是关于时间,我们听到你说什么。他们是小数。切换回普通格式,更改数字,以十进制数。

Decimal Numbers

8.现在格式更改为“日期和时间”的格式。

Date and Time Format

结果:

Dates and Times

9.如果你想突出显示包含当前日期的所有单元格,我们不能在5使用的代码行了。为什么不?因为在A列中的数字是十进制数了。它与日期(整数)相比较不会给任何对手。 (它只会在午夜给与之匹配的2020年3月13日正好!)下面的代码行不工作:

If Int(Cells(i, 1).Value) = Date Then Cells(i, 1).Font.Color = vbRed

说明:我们简单地使用Int函数。 INT函数数字舍入到最接近的整数。这样我们就可以得到没有时间日期和这些日期与时间进行比较。

结果:

Dates Without Times Equal To

10.添加以下代码行突出显示含有次在早晨所述所有单元。

If (Cells(i, 1).Value - Int(Cells(i, 1).Value)) < 0.5 Then Cells(i, 1).Font.Color = vbRed

说明:我们只需要小数所以因此我们减去整数部分。中午(中途天)被表示为0.5。

小数低于0.5的时代是在早晨。

结果:

Times in the Morning