【发布时间】:2021-08-06 17:52:06
【问题描述】:
我有一个独特的问题,我无法在论坛中找到解决方案。我有一个 Excel 表,我通过列表选项输入日期。 3 个单元格分别列出了日期(D1)、月份(M1)、年份(Z1)。我有一个按钮宏,它可以获取单元格的值,并且还通过 VLOOKUP 并行将月份名称转换为月份编号,因此输出是具有正确格式 (DD/MM/YYYY) 的字符串。我将 DateSerial 与 Format 结合使用。到目前为止一切顺利!
Y1 = Format(DateSerial(Z1, M1, D1), "DD/MM/YYYY")
但是现在要将此字符串转换为我使用 CDate 的日期。如果我有美国的区域日期设置(格式 MM/DD/YYYY),那么 CDate 会将日期转换为本地时间格式。但是,我需要这种(DD/MM/YYYY)格式以供将来使用。无论本地日期格式如何,如何获得特定格式的输出?还有其他解决方案吗?提前非常感谢。
编辑: Y1 被声明为字符串。当它被声明为日期时,尽管格式条件,日期已经以区域格式出现。我还尝试了下面带有“”符号的格式函数,但它给了我一个溢出错误。
Y1 = Format(DateSerial(Z1, M1, D1), DD / MM / YYYY)
【问题讨论】:
-
感谢您的回复。如果我存储为日期(例如 Dim Y1 作为日期),它仍然会根据本地格式以 MM/DD/YYYY 格式存储日期。
-
因此,当您需要特定格式时,请在
Date变量上使用Format...。 “但是现在要将此字符串转换为我正在使用的日期CDate”......为什么?那是倒退。你有一个Date和DateSerial。 -
换句话说,
Date是一个浮点数。它“根据您的计算机识别的短日期格式”显示给您。如果您想要一致的格式,请使用String,就像您正在做的那样。如果您想要一个Date变量,请记住它只是一个数字。 -
那是你的问题。不要与日期的
String版本进行比较。使用Date变量,例如Month和Year函数。 -
您能否分享完整的代码,以便我们了解为什么首先需要将日期转换为字符串?您似乎根本不需要这样做。