本示例教您如何在Excel VBA中比较日期和时间。日期和时间在Excel中以数字存储,并计算自1900年1月0日以来的天数。您看到的内容取决于数字格式。
1.在A列中输入一些数字。
2.这些数字是日期。这是输入某些日期而不用担心日期格式的理想方法。将格式更改为日期(右键单击列A标头,设置单元格格式,然后选择日期)。
结果:
注意:日期采用美国格式。第一个月,第二天。这种格式取决于您的Windows区域设置。
在您的工作表上放置一个命令按钮,并添加以下代码行:
3.声明整数类型的变量i。
暗淡我作为整数
4.添加一个For Next循环。
对于我= 1至5
下一个我
下一个我
5. Date函数返回不带时间的当前日期。将以下代码行添加到循环中,以突出显示包含当前日期(3/13/2020)的所有单元格。
如果 Cells(i,1).Value =日期,则 Cells(i,1).Font.Color = vbRed
结果:
6.将以下代码行添加到循环中,以突出显示所有早于04/19/2019的日期。
如果 Cells(i,1).Value <DateValue(“ April 19,2019 ”)然后 Cells(i,1).Font.Color = vbRed
结果:
7.但是时间呢,我们听到你说。他们是小数。切换回常规格式,并将数字更改为十进制数字。
8.现在将格式更改为“日期和时间”格式。
结果:
9.如果要突出显示包含当前日期的所有单元格,则不能再使用5处的代码行。为什么不?因为A列中的数字现在是十进制数字。将其与Date(整数)进行比较不会产生任何匹配。(它只会在午夜与3/13/2020进行匹配!)以下代码行确实有效:
如果 Int(Cells(i,1).Value)=日期,则 Cells(i,1).Font.Color = vbRed
说明:我们仅使用Int函数。Int函数将数字舍入到最接近的整数。这样,我们可以获得没有时间的日期,并将这些日期与日期进行比较。
结果:
10.添加以下代码行,以突出显示上午所有包含时间的单元格。
如果(Cells(i,1).Value-Int(Cells(i,1).Value))<0.5 那么 Cells(i,1).Font.Color = vbRed
说明:我们只需要小数,因此我们减去整数部分。中午(一天中的一半)表示为0.5。低于0.5的小数点是早晨的时间。
结果: