我有一个日期/时间列表,我正在使用InStr找到我正在寻找的时间,Excel中的单元格如下:19/07/2016 10:55:00 AM
我在这里寻找12:00至12:59 AM之间的任何时间:
If InStr(1, ActiveCell.Value, " 12:") > 0 And InStr(1, ActiveCell.Value, "AM") > 0 Then
我通过50个文件进行扫描。它适用于前28个和第29个文档(具有类似数据),它返回0.
我也有成功搜索“12:”,“1:”,“2:”等的文档,但是当我搜索“7:3”时它返回0。
ElseIf InStr(1, ActiveCell.Value, " 7:3") > 0 And InStr(1, ActiveCell.Value, "AM") > 0 And ActiveCell.Row > Leq730Row + 600 Then
但是,再一次,有些文件会成功返回,而其他文件则没有。
在开始阅读数据之前,是否必须指定时间格式?当我打开excel时,文件看起来一样,但我觉得我不理解VBA如何读取单元格。
答案 0 :(得分:1)
时间存储为小数,因此有三个选项:
首先使用小数而不是文字:
ElseIf InStr(1, ActiveCell.Text, " 12:") > 0 And InStr(1, ActiveCell.Text, "AM") > 0 And ActiveCell.Row > Leq730Row + 600 Then
或者您可以参考单元格的文本:
ElseIf InStr(1, Format(ActiveCell.Value, "dd/mm/yyyy hh:mm:ss AM/PM"), " 12:") > 0 And InStr(1, Format(ActiveCell.Value, "dd/mm/yyyy hh:mm:ss AM/PM"), "AM") > 0 And ActiveCell.Row > Leq730Row + 600 Then
或者您可以在值上使用Format使其成为字符串文本:
man 5 core