gpt4 book ai didi

vba - 为什么 CDate ("0/5/14") 返回 5/14/2000?

转载 作者:行者123 更新时间:2023-12-03 02:04:45 24 4
gpt4 key购买 nike

在 Excel 2010 VBA 中,我正在测试以确保我的代码能够正确处理无效的用户输入。我正在使用 CDate 来验证日期输入。我发现输入无效日期“0/5/14”时,CDate 返回日期 5/14/2000。

这是 CDate 的错误,还是我遗漏了什么?在 Excel 工作表单元格中,“0/5/14”的计算结果不是日期。

同样,Excel VBA 中的 Year("0/5/14") 返回 2000,而 Excel 工作表单元格中的 =Year("0/5/14") 返回错误。

Windows 区域设置为美国英语,因此月/日/年是标准的。

最佳答案

CDate 函数(以及其他字符串日期函数,例如 DateValue)检查日期的字符串表示形式,并尝试将其与任何已知的日期格式进行匹配,认为它是一个有效的日期,除非它不能匹配任何已知的格式。由于年份可以表示为 1 位或更多位,因此输入字符串“0/5/14”可以认为是年/月/日格式,因此返回“14th of May, 2000”以您本地的日期格式。

CDateDateValue 之间的区别在于 CDate 可以接受数字,而 DateValue 则不能。两者都首先使用 PC 的短日期格式 - 对于使用 en-US 设置的人来说这并不重要。如果第一次尝试时提供的字符串不适合,这两个函数都会回退到其他日期格式。

如何处理此类情况取决于您。在您的情况下,2000 年的日期很可能超出范围,因此您可以据此拒绝它。如果您想坚持使用“mm/dd/yyyy”格式,您可以编写自己的解析器代码。

关于vba - 为什么 CDate ("0/5/14") 返回 5/14/2000?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23529485/

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