VBA中使用Format函数设置"mm dd yy"格式时FDFormat对象异常
问题原因与解决方案
嘿,我马上就能帮你搞懂这个问题!核心问题出在变量类型的不匹配上:
你看,Format()函数的返回值是字符串类型,但你把它赋值给了声明为Date类型的变量FDFormat。VBA会自动把这个格式化后的字符串转换回日期数值——而Date类型存储的其实是一个代表日期的数字,它的显示格式是由系统默认的短日期格式决定的,所以你看到的是4/2/18,而不是你想要的带前导零的字符串格式。
解决步骤
- 修改变量类型:把
FDFormat的类型从Date改成String,这样就能保留Format()返回的格式化文本。
另外注意:原代码里FileYear是用Year()函数获取的年份数值,应该声明为Integer类型;如果FileMonth也要用格式化后的字符串,同样要改成String类型。 - 修正后的代码示例:
Dim FileYear As Integer, FileMonth As String, FileDate As Date, FDFormat As String FileDate = #4/2/2018# FDFormat = Format(FileDate, "mm dd yy") ' 现在FDFormat会是"04 02 18" FileYear = Year(FileDate) ' FileYear = 2018 FileMonth = Format(FileDate, "mm") ' 比如这里会得到"04"
额外说明
Date类型本质上是存储一个浮点数(整数部分是日期,小数部分是时间),它本身没有固定的“格式”——你看到的格式只是VBA根据系统设置展示的方式。如果需要特定格式的日期文本,必须用字符串类型来存储,这样才能保留你想要的mm dd yy格式。
内容的提问来源于stack exchange,提问作者Liz
相关产品推荐
相关产品推荐

