【发布时间】:2021-04-10 13:14:59
【问题描述】:
我一直在尝试解决这个问题,我什至偶然设法让它工作了一段时间,但是从那以后我就没有运气了。
所以我有一个 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 是这段代码所在的循环
【问题讨论】:
-
听起来你的“日期”根本不是日期......而是文字。 Excel 日期实际上是一个数字,您所说的单元格格式实际上是数字格式。 VBA 绝对可以将任何格式转换为另一种格式,但您并没有为 VBA 提供您所想的那样。将工作表中的文本“日期”转换为真正的 Excel 日期(数字格式为日期),或者将文本“日期”中的句点替换为正斜杠
/。