You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Excel VBA返回数字而非日期?自定义函数输出异常求助

自定义VBA日期函数返回数字的原因及解决方法

你看到的45418是Excel日期的底层序列号——Excel默认把日期存储为从1900年1月1日开始计数的数字,1代表1900/1/1,每过一天数字加1,45418就是当前日期对应的序列号值。

你的VBA函数本身没有问题:

Function CurrentDate() As Date
CurrentDate = Date
End Function

它确实返回了正确的日期类型,只是显示结果的单元格数字格式未设置为日期,所以直接展示了底层的序列号。

解决方法有两种:

  1. 调整单元格格式
    • 选中显示数字的单元格,按Ctrl+1打开「设置单元格格式」对话框
    • 切换到「数字」选项卡,选择「日期」类别,挑选合适的日期格式后确认,就能看到正常的日期显示
  2. 修改VBA函数返回文本格式日期(适合需要固定格式的场景)
    把函数改成返回字符串,用Format方法指定日期格式:
    Function CurrentDate() As String
        CurrentDate = Format(Date, "yyyy-mm-dd") ' 可替换为"mm/dd/yyyy"等你需要的格式
    End Function
    
    注意这种方法返回的是文本,无法直接参与日期计算,优先推荐第一种方法。

内容的提问来源于stack exchange,提问作者Azmain1234

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 09:15:53