CDate认可澳大利亚date格式?

我有一个8月中旬创build的电子表格,每天都有一列表格。 列标题是当天的date。 date显示如何显示:“dd / mm / yyyy”

但是,我有macros需要阅读这些date,以执行其工作。 因为我正在使用表格,所以date看起来像文本而不是5位数字(当我将标题单元格的格式设置为“常规”时,它保持为“dd / mm / yyyy”格式,而不是改为5位数字,直到9月1日为止,这个问题并没有问题,在此之后,CDate(在macros观中)开始读取这些date为“mm / dd / yyyy”

有没有办法让CDate认可澳大利亚的date格式,而不是美国人? 或者失败了,让表头保持date而不是文本? 我宁愿避免不得不将表转换回一个范围,因为macros被devise为使用表属性,ListColumns等

更新:

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

 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调用显示以下内容:

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

因此, Format()调用正确地格式化date,但是对ListColumn.Name的调用用于将格式更改为“mm / dd / yyyy”。

从帮助文件:

CDate根据系统的区域设置识别date格式。 如果提供的date,月份和年份的正确顺序不是一个确认的date设置,则可能无法确定。

我讨厌依赖于语言环境,因为大部分时间看起来与我的意图完全相反,再加上它使得代码的可移植性降低了。

我通常尽可能明确地处理date:

  1. 将string拆分成不同的部分(年,月,日,以及小时,分钟和秒)(如果相关的话)
  2. 将各个部分粘贴到DateSerial函数中。 这将返回一个Datetypes。 (如果适用的话,您可以添加TimeSerial的输出。)
  3. 如果需要进行显示,请使用Format函数格式化该Date ,该函数返回一个string。

这是一个成功的例子。

正如我在更新中所示,ListColumn.Name方法负责不需要的转换。 我仍然不知道为什么,但有一个简单的解决办法:

 CreateHistoryColumn.Name = CLng(headerDate) 

这强制标题被视为一个数字,因此它可以被认为是适当的date。 我不能再解释了。