【发布时间】:2023-03-26 21:28:01
【问题描述】:
在 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 区域设置为美国英语,因此月/日/年是标准设置。
【问题讨论】:
-
Excel 清楚地将 0 视为 2000 年的第 0 年。无法解释原因,但为了帮助处理错误,也许检查位数。如果字符串中少于 6 个,则返回给用户。
-
最好使用三个单独的控件,这样您就可以在每个步骤中进行验证,而不是尝试解析或解释错误的击键等。并捕获由此产生的错误。
-
我意识到
IsDate超出了您的问题定义的范围,但它在此处以令人难以置信的详细信息进行了记录,并可能为您提供更好的验证:stackoverflow.com/questions/4338025/…
标签: vba excel excel-2010