首页 > 解决方案 > VBA无法转换一般存储的日期

问题描述

我一直在尝试解决这个问题,我什至偶然设法让它工作了一段时间,但是从那以后我就没有运气了。

所以我有一个 excelsheet,其中有一列以这种格式存储日期:“yyyy.mm.dd hh:mm”(例如:2021.01.02 11:40)这些日期以一般单元格格式存储,我会喜欢将它们存储在 Date 变量中,这样我就可以使用 DateDiff 函数来确定从现在到存储的日期已经过去了多少天。我可以将它们存储为字符串,但每当我尝试将其转换为日期时,我都会收到“运行时错误'13':类型不匹配”错误。

我有一个相当长而复杂的代码,所以我不会分享整个事情。我仍然不确定这有什么帮助,但它在braX的解决方案中处于当前状态:

    Dim Date1 As String
    Dim Date2 As Date
    Dim dayD As Long

    ...

    Date1 = ws.Cells(RowLoop, 124).Value
    MsgBox Date1
    Date2 = CDate(Replace(Date1, ".", "/"))
    MsgBox Date2
    dayD = DateDiff("D", Date2, Now)
    MsgBox dayD

ws 指的是它来自的工作表 RowLoop 是此代码所在的循环

标签: excelvbadateformat

解决方案


由于它们存储为字符串而不是实际日期,因此您需要先将句点转换为斜线,以便将它们转换为实际日期:

Debug.Print CDate(Replace("2021.01.02 11:40", ".", "/"))

不确定您的上下文,因为您在问题中没有提供代码。

Dim dt as Date
dt = CDate(Replace("2021.01.02 11:40", ".", "/"))

MsgBox "The date is: " & Format$(dt,"mm/dd/yy hh:mm:ss")

推荐阅读