1、在excel工作表中,时间数据往往仅被当做可视化的展示元素;而VBA编程环境中,时间的价值得到了充分释放。它不仅能准确记录各类事件发生的时间点,还能深度参与复杂的数值计算,实现到期提醒、时间间隔统计等使用功能。此外,时间数据还能作为触发程序执行的关键条件,让代码按照预设的时间自动运行,显著提升工作自动化程度。
2、date 、now、time 三个时间函数
Sub dnt()
Cells(2, "a") = Date ‘输出结果如下表
Cells(2, "b") = Now
Cells(2, "c") = Time
Cells(4, "a") = CDbl(Cells(2, "a"))’转换为double 型,结果如下表
Cells(4, "b") = CDbl(Cells(2, "b"))
Cells(4, "c") = CDbl(Cells(2, "c"))
End sub
now()包含完整的日期+时间,date是日期,time是时间;数据类型虽然是日期型,但是本质是 double cdbl类型;整数部分是date,小数部分是time。通过函数Cdbl,可以转换为double型。
3、DateSerial (年、 月、 日)函数,填充某年某月的日期(如下图,代码怎么写?)
Sub dates()
Dim r
For r = 1 To 31
‘r从1到31循环,即可以代表单元列号,也可以是日期
Cells(1, r) = DateSerial(2025, 2, r)
‘r为1时,在1行1列中填入“2025.2.1”
If Cells(1, r) = DateSerial(2025, 3, 0) Then
Exit For
‘如果填入的日期已经是该月份的最后一天时,跳出循环
End If
Next
End Sub
DateSerial(年,月,日)函数解释
DateSerial(2024, 1, 1)
输出 2024/1/1
DateSerial(2024, 12, 0)
输出 2024/11/30
参数为0时,相当于-1的效果。Day:0 相当上月最后一天。 Mnonth:0 相当去年最后一月。
这就实现了我们开头说的第一个功能,在录入数据、信息的同时把时间悄悄地记录在数据库中。配合for next循环,是不是很容易的填充一整月或一整年甚至几年的日期啦!!
4、计算两个日期的间隔 datediff函数
N= DateDiff("m", date1, date2)
N是计算得数,“d”是天,date1 开始日期,date2 结束日期。计算得数单位是 (天),”yyyy”:年,”m”:月,”d”:天。”ww”:周 等。包括时间也可以计算,”h”:小时,”n”:分钟,”s”:秒。
*也可以直接通过运算符计算。
5、几百上千个设备点检项目,每个项目点检频率都不一样。有没有很抓狂,想不想做一份到期自动提醒的管理表?(效果如下图)
Sub 到期提醒()
Dim r
For r = 3 To 7
’行数,一般使用end(xlup)查找非空单元格
Cells(r, "d") = Cells(r, "b") + Cells(r, "c")
‘用运算符计算到期日期
If Cells(r, "d").Value <= Date Then
‘如果到期日期小于今天的日期时,说明在今天或之前就已经到期了
Cells(r, "d").Interior.Color = RGB(255, 0, 0)
‘单元格填充红色
Else
Cells(r, "d").Interior.Color = RGB(0, 255, 0)
‘其余情况填充绿色
End If
Next
End Sub
(本章完)是不是思路一下打开了,有任何批评或疑问,可以在评论区讨论,谢谢!!
不论你是求知若渴的在校学生,还是在职场摸爬滚打多年的上班族,只要怀揣着提升自我的决心,别犹豫,快点赞、关注、收藏!我会始终站在零基础小白的视角,循序渐进,带你一步步踏入VBA的奇妙世界。