在 MS Excel 上复制粘贴日期时,我发现一个奇怪的不一致,当日期有两位数的年份时。我在一台 Windows 7 Enterprise 64 位计算机上工作,我的 Excel 是 2010 版本。
问题描述:如果我在任何应用程序(比如说记事本)中写入一个短日期,然后将其复制到 Excel,则 2029 年之后的年份将被错误解释。示例:
- 我在记事本上写下“12/01/29”,然后将该值复制粘贴到 MS Excel 中:该日期将被解释为“12/01/2029”。
- 我在记事本上写下“12/01/31”,然后将该值复制粘贴到 MS Excel 中:该日期将被解释为“12/01/1931”(而不是“12/01/1931”)。
研究1-控制面板:经过初步研究,我在控制面板/日期配置上找到了一个选项,上面写着“如果插入 2 位数字的年份,则它将包含在 1997 年至 2096 年之间”。下图(它是法语,我的系统语言,但内容是我描述的):
但是,即使这种设置会让我期望上面的测试用例进行正确的转换,但事实并非如此。
进一步研究-VBA:VBA 通常会继承托管应用程序(我的情况是 MS Excel)的设置,而托管应用程序又继承了系统的设置。例如,如果系统语言是法语,则意味着月份“December”写为“Décembre”。因此,如果我这样写,它将起作用:myDate = DateValue("11-déc-12")
,而如果我这样写,它将不起作用:myDate = DateValue("11-dec-12")
。这显然是因为 VBA 继承了系统语言,因此它识别“décembre”(法语)而不是“december”(英语)。
但是,如果我这样写:
myDate = DateValue("12/01/31")
该值将被正确解释为12/01/2031
。
进一步发现:在 Excel 单元格中手动输入“12/01/31”将正确转换为 2031。因此问题似乎出现了仅限复制粘贴。
我的问题:似乎设置之间存在不一致。有人能告诉我在哪里可以永久修复此问题,并确保设置“如果插入 2 位数字的年份,它将介于 XXXX 和 YYYY 之间”吗?提前谢谢您,如果需要,请随时询问更多详细信息。