日期基本处理
定义一个日期
1 2 3 4
| v_date = Date v_time = Now v_date2 = #"2021-06-01" v_date3 = CDate("2021-06-01")
|
日期格式化
1 2 3 4 5
| Format(Date, "yyyy-MM-dd")
v_week_num = WorksheetFunction.WeekNum(Date, vbMonday) Format(v_week_num, "00")
|
日期处理
1 2 3 4 5 6 7 8 9 10 11 12
| today = Date
yesterday = today - 1
monday = today - Weekday(today) + 2
monthFirstDay = lastMonday - Day(lastMonday) + 1
targetDate = DateSerial(Year(targetDate), Month(targetDate) + 1, 0)
weekNum = WorksheetFunction.weekNum(today, vbMonday)
|
日期比较
- 日期是可以直接比较和相减的,相减的间隔为时间的间隔。
1 2 3 4 5 6 7
| today = Date
yesterday = today - 1
today > yesterday today - yesterday
|
计算时间间隔
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Sub tt1() Dim d1, d2 As Date d1 = #11/21/2021# d2 = #12/1/2022# MsgBox("相隔" & (d2 - d1) & "天") MsgBox("相隔" & DateDiff("d", d1, d2) & "天") MsgBox("相隔" & DateDiff("m", d1, d2) & "月") MsgBox("相隔" & DateDiff("yyyy", d1, d2) & "年") MsgBox("相隔" & DateDiff("q", d1, d2) & "季") MsgBox("相隔" & DateDiff("w", d1, d2) & "周") MsgBox("相隔" & DateDiff("h", d1, d2) & "小时") MsgBox("相隔" & DateDiff("n", d1, d2) & "分种") MsgBox("相隔" & DateDiff("s", d1, d2) & "秒") End Sub
|
计算耗时
1 2 3 4 5 6 7
| startTime = Time
MsgBox ("运行此流程共耗时:" & DateDiff("s", startTime, Time) & "秒")
Debug.Print DateDiff("s", startTime, Time) & "秒"
|
vba日期和时间函数汇总和代码
第一,vba日期和时间函数的基本用法
Excel中vba日期函数和时间函数分别是DATE和TIME。
VBA提供了三个无参数函数:Date、Time、Now,分别返回当前电脑系统的日期、时间、日期+时间。
下面的代码我们以三个消息框来结合日期和时间函数,分别提示当前的日期、时间。
1 2 3 4 5
| Sub vba时间和日期函数() MsgBox Date MsgBox Time MsgBox Now End Sub
|
第二,使用vba日期和时间函数修改系统信息
- 下面这段代码将电脑右下角的日期和时间修改为2011年1月1日21:50:00。
1 2 3 4
| Sub 修改时间和日期() Time = "21:50:00" Date = "2011年1月1日" End Sub
|
第三,用消息框返回当前日期的年、月、日和当前时间的时、分、秒
1 2 3 4 5 6 7 8 9 10 11 12
| Sub SmpYearHour() MsgBox "当前日期:" & Date & Chr(10) & _ "年:" & Year(Date) & Chr(10) & _ "月:" & Month(Date) & Chr(10) & _ "日:" & Day(Date) MsgBox "当前时间:" & Time & Chr(10) & _ "时:" & Hour(Time) & Chr(10) & _ "分:" & Minute(Time) & Chr(10) & _ "秒:" & Second(Time) End Sub
|
第四,其余的vba日期和时间函数列表
| 函数 | 说明 |
| —- | —- |
| Timer | 返回一个 Single,代表从午夜开始到现在经过的秒数。 |
| TimeSerial(hour, minute, second) | 返回一个 Variant (Date),包含具有具体时、分、秒的时间。 |
| DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) | 返回 Variant (Long) 的值,表示两个指定日期间的时间间隔数目。 |
| Second(time) | 返回一个 Variant (Integer),其值为 0 到 59 之间的整数,表示一分钟之中的某个秒。 |
| Minute(time) | 返回一个 Variant (Integer),其值为 0 到 59 之间的整数,表示一小时中的某分钟。 |
| Hour(time) | 返回一个 Variant (Integer),其值为 0 到 23 之间的整数,表示一天之中的某一钟点。 |
| Day(date) | 返回一个 Variant (Integer),其值为 1 到 31 之间的整数,表示一个月中的某一日。 |
| Month(date) | 返回一个 Variant (Integer),其值为 1 到 12 之间的整数,表示一年中的某月。 |
| Year(date) | 返回 Variant (Integer),包含表示年份的整数。 |
| Weekday(date, [firstdayofweek]) | 返回一个 Variant (Integer),包含一个整数,代表某个日期是星期几 |
相关链接
- VBA实战(10) - 日期处理汇总
- vba日期和时间函数汇总和代码
=================我是分割线=================
欢迎到公众号来唠嗑: