【问题标题】:VBA interpretation of input date输入日期的VBA解释
【发布时间】:2015-12-27 06:53:19
【问题描述】:

我有这个恼人的日期格式与 Excel VBA 不一致。我有一个源文本文件,其日期格式为dd/mm/yyyy(即健全的格式)。但我需要将其转换为yyyy/mm/dd(为了保持一致,我还在我的计算机中将此格式设置为默认格式)。

当我将此文本文件导出到数据库时,如果 dd 和 mm 的值都小于 12,VBA 会将它们视为 mm/dd/yyyy 而不是 dd/mm/yyyy。即使我对这种非标准的日期格式,糟糕的 VBA 感到非常困惑。

例如,我在文本文件中有06/08/2015,即6th August,但CDate("06/08/2015") 返回2015/06/08,即8th June。但是如果文本文件有15/08/2015,VBA可以识别为2015/08/15。

如何告诉 VBA 06/08/2015 是 dd/mm/yyyy 格式?

对于这项烦人且乏味的任务的任何帮助将不胜感激!

【问题讨论】:

  • VBA 偏向于美国日期。使用 CDate() 时,如果 mm/dd 可以形成合法日期,它将按此方式进行。

标签: vba excel date datetime


【解决方案1】:

使用 DateSerial() 代替 CDate():

    Dim d$
    d = "06/08/2015"
    MsgBox DateSerial(Right$(d, 4), Mid$(d, 4, 2), Left$(d, 2))

这样您就可以控制日期的哪些位。

【讨论】:

  • 是的,这是我看到它工作的唯一方式,但希望有一种更通用的方式,因为数据源也不是很一致,它可能有一天会 dd/mm 和 mm /dd 另一个。
  • 非常感谢 DateSerial 的提示。这就是现在要走的路。
  • 如果数据不一致,你就陷入了困境。
猜你喜欢
  • 1970-01-01
  • 2019-10-30
  • 1970-01-01
  • 2012-11-24
  • 2013-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-18
相关资源
最近更新 更多