【发布时间】:2019-03-11 21:25:24
【问题描述】:
我需要将电子表格列中的内容从文本转换为日期。
单元格格式为文本,并指示输入者输入日期为“ddmmyyyy”。
发生了意外,我发现了一些无法解析为日期的内容,包括“未知”之类的条目。
所以我使用了一个声明为日期的变量,并编写了一个错误处理程序来处理无法解析的内容。
现在我无法锻炼。
如果日期是 2000 年 3 月 3 日,并且有人将其输入为“03332000”,则不会解析,因为“33”不能是一个月或一天;它被我想要的错误处理程序捕获。
但如果输入为“03132000”,我想不出办法阻止 VBA 将其转换为有效日期为“13/03/2000”。
声明日期变量的格式不会阻止 VBA 解析日期。
我可以编写一些东西来测试字符串的日期和月份部分的数字范围,但那是额外的代码行,我希望只通过错误处理程序来完成。
【问题讨论】:
-
请展示您现有的代码 - 调整它比让我们尝试准确地猜测您做了什么要容易得多。您可以尝试使用 DateSerial() 并使用 Left()/Mid()/Right() 解析条目的特定部分
-
蒂姆谢谢。我会稍微修改一下帖子。
-
蒂姆,当我重写代码时(我现在在家)@Gary 的学生已经确认我必须测试日期的组件的有效性。
-
我并不是建议您不需要测试有效性,只是您可以防止 Excel 在需要时交换日期和月份。