Excel VBA 编程基础 -- 日期与时间(六)- 信息格式化
- 2026-11-06 09:26:54
Excel VBA 编程基础 -- 日期与时间(六)- 信息格式化1. FormatDateTime 这个函数我们在前面已经介绍过,它的一般格式如下: FormatDateTime(dateExpr[, NamedFormat]) 其中,dateExpr 是一个日期时间表达式,NamedFormat 取值如下图所示: 
图1 NamedFormat NamedFormat 是一个可选参数,如果不指定,则默认取值 0,即 vbGeneralDate。 FormatDateTime 的作用示例如下: 
图2 FormatDateTime 示例 由图可见,不指定 NamedFormat 参数时,FormatDateTime 默认取 0 值,也就是 vbGeneralDate,这个参数在日期和时间都存在时,相当于 vbShortDate + vbLongTime,但如果只有日期而没有时间,则相当于 vbShortDate。 FormatDateTime 用于格式化日期时间,而且因为参数的意义比较直观,因此用起来也很简单直接。但也正因为如此,其功能也比较有限。下面介绍一个功能更加强大的格式化函数。 2. Format Format 是一个转换函数,将一个表达式转换为指定的格式。其一般格式如下: Format(expr, [ format ], [ firstdayofweek ], [ firstweekofyear ]) Format 是一个通用的转换函数,不限于格式化日期时间,所以 expr 可以是任何合法的表达式(我们这里只限于日期时间的格式化,其他的格式化留待以后再讨论)。firstdayofweek 和 firstweekofyear 我们在讨论 DateDiff 函数时已经见识过,此处不赘。 Format 的返回值: 例1. Format 与 FormatDateTime 
图3 Format 与 FormatDateTime 由图可见,不指定 format 参数的 Format 函数,在格式化日期时间时,与不指定 NamedFormat 参数(或指定 NamedFormat 参数为 vbGeneralDate)的 FormatDateTime 函数相同。 另外,FormatDateTime 的 NamedFormat 参数和 Format 函数的 format 有如下的对应关系: 
图4 NamedFormat 和 format 的对应关系 其中,NamedFormat 的值是符号常量,而 format 的值是字符串。 由此可以认为,FormatDateTime 是 Format 函数的特定版本,而 Format 则是 FormatDateTime 的一般化版本。 日期的格式化符号 Format 函数中的格式化字符串除了与 FormatDateTime 函数中的 NamedFormat 对应的之外,还有更加灵活的表示,其中用来格式化日期的符号如下表所示: 
图5 日期的格式化符号 其中: 例2. 日期的格式化 
图6 日期的格式化 对照图5 的格式化符号,本例中的代码及其输出结果不难理解。只说明两点: 时间的格式化符号 Format 中用来格式化时间的符号如下表所示: 
图7 时间的格式化符号 其中,n/nn 只能单独使用,如果和 h/hh 一起使用,必须用 m/mm。 例3. 时间的格式化 
图8 时间的格式化 和图7 的格式化符号对照阅读,本例的时间格式化代码和结果不难理解。 由图可见: 相关阅读 Excel VBA 编程基础 -- 日期与时间(一)- 日期(一) Excel VBA 编程基础 -- 日期与时间(二)- 日期(二) Excel VBA 编程基础 -- 日期与时间(三)- 日期(三) Excel VBA 编程基础 -- 日期与时间(四)- 日期(四) Excel VBA 编程基础 -- 日期与时间(五)- 时间


类型:Variant (String) 意义:expr 根据 format 格式化的结果



Sunday = 1 表示 firstdayofweek = vbSunday 第一周从元月1日算起 表示 firstweekofyear = vbFirstJan1

Format(t, "w") 的输出结果 4 表示 2026-04-22 这一天是周三(因为周日是 1)。 Format(t, "y") 的输出结果 112 表示 2026-04-22 这一天是 2026 年的第 112 天,这就是“年中的天”的意义。Format(t, "d") 的 22 表示这一天是 4 月的第 22 天,这就是“月中的天”的意义。


Format(t)、Format(t, "ttttt")、Format(t, "h:mm:ss") 三种格式化的效果是相同的。 h/m/s、hh/mm/ss、n/nn:单字母表示无前置零,双字母表示有前置零。 Format(t, "AMPM") 显示的是在 Windows 中设定的上、下午符号: 中文语境中是 上午/下午 英文语境中则是 AM/PM 当然,这些符号都是可以修改的。虽然如此,但一般还是不要修改 Windows 的默认设定。
本文来自网友投稿或网络内容,如有侵犯您的权益请联系我们删除,联系邮箱:wyl860211@qq.com 。