10、时间在VBA编程中的功能蜕变(零基础入门)


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的奇妙世界。

原文链接:,转发请注明来源!