gpt4 book ai didi

excel - CDate 识别澳大利亚日期格式?

转载 作者:行者123 更新时间:2023-12-04 18:12:51 35 4
gpt4 key购买 nike

我有一个我在 8 月中旬创建的电子表格,其中有一个表格,从那时起每天都有一列。列标题是当天的日期。日期以我希望的方式显示:“dd/mm/yyyy”

但是,我有宏需要读取这些日期才能执行其工作。因为我使用的是表格,所以日期似乎是文本而不是 5 位数字(当我将标题单元格的格式设置为“常规”时,它仍然是“dd/mm/yyyy”格式而不是更改为 5 位数字。直到 9 月 1 日这才成为问题,之后 CDate(在宏中)开始将这些日期读取为“mm/dd/yyyy”

有没有办法让 CDate 识别澳大利亚日期格式而不是美国日期?或者如果做不到这一点,让表格标题保留为日期而不是文本?我宁愿避免将表转换回范围,因为宏旨在使用表属性、ListColumns 等。

更新:

我已经缩小了问题的范围。这不是日期,而是 ListColumn.Name 属性。出于某种原因,它正在重新转换我的日期。我正在使用 Format()设置日期格式,如下所示:

CreateHistoryColumn.Name = Format(headerDate, "dd/mm/yyyy")

MsgBox Day(headerDate) & "/" & Month(headerDate) & "/" & Year(headerDate)
MsgBox Format(headerDate, "dd/mm/yyyy")
MsgBox CreateHistoryColumn.Name

在哪里 CreateHistoryCol是类 ListColumn 的对象. 3 个 MsgBox 调用显示以下内容:

6/9/2012 06/09/2012 9/06/2012



所以 Format()调用格式正确,但调用 ListColumn.Name用于将格式更改为“mm/dd/yyyy”。

最佳答案

从帮助文件:

CDate recognizes date formats according to the locale setting of your system. The correct order of day, month, and year may not be determined if it is provided in a format other than one of the recognized date settings.



我讨厌依赖语言环境,因为大多数时候它似乎与我的意图相反,而且它使代码的可移植性降低。

我通常会尽可能明确地处理日期:
  • 将您的字符串分成不同的部分(年、月、日,以及相关的时、分、秒)
  • 将各个部分粘在DateSerial功能。这将返回 Date类型。 (如果适用,您可以添加 TimeSerial 的输出。)
  • 如果出于显示目的需要,请格式化 Date酌情使用Format函数,它返回一个字符串。

  • Here's a worked example.

    关于excel - CDate 识别澳大利亚日期格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12272962/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com