为何Excel VBA返回数字而非日期?自定义函数输出异常求助
自定义VBA日期函数返回数字的原因及解决方法
你看到的45418是Excel日期的底层序列号——Excel默认把日期存储为从1900年1月1日开始计数的数字,1代表1900/1/1,每过一天数字加1,45418就是当前日期对应的序列号值。
你的VBA函数本身没有问题:
Function CurrentDate() As Date CurrentDate = Date End Function
它确实返回了正确的日期类型,只是显示结果的单元格数字格式未设置为日期,所以直接展示了底层的序列号。
解决方法有两种:
- 调整单元格格式
- 选中显示数字的单元格,按
Ctrl+1打开「设置单元格格式」对话框 - 切换到「数字」选项卡,选择「日期」类别,挑选合适的日期格式后确认,就能看到正常的日期显示
- 选中显示数字的单元格,按
- 修改VBA函数返回文本格式日期(适合需要固定格式的场景)
把函数改成返回字符串,用Format方法指定日期格式:
注意这种方法返回的是文本,无法直接参与日期计算,优先推荐第一种方法。Function CurrentDate() As String CurrentDate = Format(Date, "yyyy-mm-dd") ' 可替换为"mm/dd/yyyy"等你需要的格式 End Function
内容的提问来源于stack exchange,提问作者Azmain1234
相关产品推荐
相关产品推荐

