【问题标题】:Setting specific date format VBA excel设置特定日期格式 VBA excel
【发布时间】: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”......为什么?那是倒退。你有一个DateDateSerial
  • 换句话说,Date 是一个浮点数。它“根据您的计算机识别的短日期格式”显示给您。如果您想要一致的格式,请使用String,就像您正在做的那样。如果您想要一个 Date 变量,请记住它只是一个数字。
  • 那是你的问题。不要与日期的String 版本进行比较。使用Date 变量,例如MonthYear 函数。
  • 您能否分享完整的代码,以便我们了解为什么首先需要将日期转换为字符串?您似乎根本不需要这样做。

标签: excel vba


【解决方案1】:

设置日期(没有格式):

Y1 = DateSerial(Z1, M1, D1)

然后到 Y1,应用您喜欢的 格式,即:

dd/mm/yyyy

【讨论】:

    猜你喜欢
    • 2014-12-23
    • 2013-11-17
    • 2015-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-20
    • 2013-04-01
    • 1970-01-01
    相关资源
    最近更新 更多