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

Excel VBA获取列中最新日期时间问题:时间始终显示为00:00:00

解决Excel VBA获取列中最新日期时间时时间丢失的问题

你的代码里Split(Max_DateTime, ".")(0)这一步是核心错误——Excel是把日期时间存储成浮点数的:

  • 整数部分对应日期(从1900年1月0日开始的天数)
  • 小数部分对应时间(代表一天中的时间占比,比如0.493左右就对应11:45:00)
    按小数点分割后只取了整数部分,自然把时间相关的小数部分丢掉了,导致格式化后时间显示为00:00:00。

正确代码示例1:直接格式化完整值

Sub ObtainNewestDateTimeofaColumn()
    Dim Max_DateTime As Double
    ' 获取B列最大的日期时间值
    Max_DateTime = Application.WorksheetFunction.Max(Columns("$B:$B"))
    ' 直接转换并格式化完整的日期时间
    Dim Max_Date As String
    Max_Date = Format(CDate(Max_DateTime), "dd/mm/yyyy hh:mm:ss")
    MsgBox Max_Date
End Sub

正确代码示例2:限定数据范围(更高效)

如果B列不是整列都有数据,建议只在有效数据范围内计算,提升运行速度:

Sub ObtainNewestDateTimeofaColumn()
    Dim LastRow As Long
    Dim Max_DateTime As Double
    Dim Max_Date As String
    
    ' 获取B列最后一行有数据的行号
    LastRow = Cells(Rows.Count, "B").End(xlUp).Row
    ' 仅在有效数据范围内取最大值
    Max_DateTime = Application.WorksheetFunction.Max(Range("B1:B" & LastRow))
    ' 格式化日期时间
    Max_Date = Format(CDate(Max_DateTime), "dd/mm/yyyy hh:mm:ss")
    
    MsgBox Max_Date
End Sub

补充说明:

  • 不需要用Split分割数值,CDate(Max_DateTime)会自动把浮点数转换成正确的日期时间类型
  • 如果需要12小时制显示时间,把格式字符串改成"dd/mm/yyyy hh:mm:ss AM/PM"即可

内容的提问来源于stack exchange,提问作者Abby Vilchis Gómez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 23:50:33