![日期类型管理不匹配(2 位数字年份)- 复制/粘贴用户操作](https://linux22.com/image/1434260/%E6%97%A5%E6%9C%9F%E7%B1%BB%E5%9E%8B%E7%AE%A1%E7%90%86%E4%B8%8D%E5%8C%B9%E9%85%8D%EF%BC%882%20%E4%BD%8D%E6%95%B0%E5%AD%97%E5%B9%B4%E4%BB%BD%EF%BC%89-%20%E5%A4%8D%E5%88%B6%2F%E7%B2%98%E8%B4%B4%E7%94%A8%E6%88%B7%E6%93%8D%E4%BD%9C.png)
在 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 之间”吗?提前谢谢您,如果需要,请随时询问更多详细信息。