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

VBA实现Excel工作表重命名为上一月「MMM YYYY」格式并修复代码问题

原代码错误原因
  • 单独对月份做减法得到的是1~11(非1月时)或0(1月时)的数值,直接传入Format函数时,VBA会将该数值识别为日期序列号(Windows版Excel默认1900年1月1日对应序列号1),而非你想要的月份值,因此会输出错误的月份归属结果。
  • 单独取当前年份拼接,没有处理1月时上年12月的跨年场景,导致年份计算错误。
修正后代码
Sub test()
    Dim prevMonth As Date
    ' 直接计算上个月的完整日期,自动适配跨年场景
    prevMonth = DateAdd("m", -1, Date)
    ' 格式化输出为大写MMM YYYY格式
    Sheets("Sheet1").Name = UCase(Format(prevMonth, "MMM YYYY"))
End Sub
代码说明
  • 调用DateAdd("m", -1, Date)直接生成上个月的完整日期,VBA内置逻辑自动处理跨年:例如当前日期为2022年1月10日,该函数会返回2021年12月10日,无需手动判断月份边界。
  • 对完整的上月日期做格式化,避免了数值转日期的解析错误。
  • 外层UCase()函数将输出转为全大写,匹配示例要求的JUN 2021格式,如果不需要大写,去掉该函数即可得到首字母大写的格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 12:30:00