📜  VBA-日期时间功能(1)

📅  最后修改于: 2023-12-03 15:35:34.807000             🧑  作者: Mango

VBA-日期时间功能介绍

概述

VBA 是 Visual Basic for Applications 的缩写,是一种宏语言,是 Microsoft Office 套件中的重要一部分。日期时间是 VBA 的一个重要功能,VBA 提供丰富的日期时间处理函数和方法,可以用来进行日期时间的格式化、计算、比较等操作,方便程序员处理日期时间数据。

日期时间的表示

在 VBA 中,日期时间的表示通常使用 Date 类型和 Time 类型。其中 Date 表示日期,以“年/月/日”的形式表示,如“2022/01/01”,而 Time 表示时间,以“时:分:秒”的形式表示,如“15:30:00”。同时,VBA 还提供了 DateTime 类型,可以表示日期时间的组合,以“年/月/日 时:分:秒”的形式表示,如“2022/01/01 15:30:00”。

日期时间的格式化

VBA 提供了 Format 函数,用于将日期时间以指定的格式进行格式化输出。Format 函数的语法结构如下:

Format(expression[, format[, firstdayofweek[, firstweekofyear]]])

其中,expression 为要进行格式化的日期时间表达式,format 为要使用的格式字符串。常用的格式字符串如下:

  • “yyyy”:四位数表示的年份;
  • “yy”:两位数表示的年份;
  • “m”:月份,不带前导零;
  • “mm”:月份,带前导零;
  • “mmm”:月份的缩写;
  • “mmmm”:月份的完整名称;
  • “d”:日期,不带前导零;
  • “dd”:日期,带前导零;
  • “ddd”:星期的缩写;
  • “dddd”:星期的完整名称;
  • “h”:小时,以 12 小时制表示,不带前导零;
  • “hh”:小时,以 12 小时制表示,带前导零;
  • “H”:小时,以 24 小时制表示,不带前导零;
  • “HH”:小时,以 24 小时制表示,带前导零;
  • “n”:分钟,不带前导零;
  • “nn”:分钟,带前导零;
  • “s”:秒钟,不带前导零;
  • “ss”:秒钟,带前导零;
  • “am/pm”:以“am”或“pm”表示整数小时值的 12 小时制标记;
  • “AM/PM”:以“AM”或“PM”表示整数小时值的 12 小时制标记。

例如,使用以下代码可以将当前日期格式化为“2022年01月01日”形式:

Dim d As Date
d = Date
Dim s As String
s = Format(d, "yyyy年mm月dd日")
MsgBox s
日期时间的计算

VBA 提供了一些用于日期时间计算的函数和运算符。常用的日期时间计算函数和运算符如下:

  1. DateAdd 函数:返回加上指定时间间隔后的日期时间。语法结构如下:

    DateAdd(interval, number, date)
    

    其中,interval 表示要添加的时间间隔,可以是以下值之一:

    • “yyyy”:年;
    • “q”:季度;
    • “m”:月;
    • “y”:日;
    • “w”:周;
    • “d”:日;
    • “h”:小时;
    • “n”:分钟;
    • “s”:秒。

    number 表示要添加的时间间隔数值,date 表示要进行计算的日期时间表达式。例如,使用以下代码可以将当前日期加上 3 天:

    Dim d As Date
    d = DateAdd("d", 3, Date)
    MsgBox d
    
  2. DateDiff 函数:返回两个日期之间的时间间隔。语法结构如下:

    DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]])
    

    其中,interval 含义同 DateAdd 函数,date1 和 date2 分别表示要计算的两个日期时间表达式,firstdayofweek 和 firstweekofyear 分别表示一周中的第一天和一年中的第一周,可以省略。例如,使用以下代码计算 2022 年元旦距离当前日期还有多少天:

    Dim days As Long
    days = DateDiff("d", Date, "2022/01/01")
    MsgBox days
    
  3. DatePart 函数:返回指定日期时间表达式的指定部分的数值。语法结构如下:

    DatePart(interval, date[, firstdayofweek[, firstweekofyear]])
    

    其中,interval 含义同 DateAdd 函数,date 表示要查询的日期时间表达式,firstdayofweek 和 firstweekofyear 含义同 DateDiff 函数,可以省略。例如,使用以下代码获取当前时间的小时数:

    Dim hour As Integer
    hour = DatePart("h", Time)
    MsgBox hour
    
日期时间的比较

在 VBA 中,可以使用运算符进行日期时间的比较。常用的运算符如下:

  1. =:相等;
  2. <>:不相等;
  3. <:小于;
  4. :大于;

  5. <=:小于等于;
  6. =:大于等于。

例如,使用以下代码可以比较 2022 年元旦是否在当前日期之前:

If "2022/01/01" < Date Then
    MsgBox "已经过了2022年元旦!"
Else
    MsgBox "还没有过2022年元旦!"
End If
总结

日期时间是 VBA 中的一个重要功能,对于编写与时间有关的程序,使用日期时间处理函数和方法可以方便快捷地处理日期时间数据,提高程序开发效率。在使用日期时间功能时,注意格式化输出、计算以及比较日期时间时的注意事项,避免出现错误。