如何使用VBA中的Do Until循环来select当前date的第一行

我有一个Excel格式的date在6/27/2013格式的每行的Excel表。 我希望能够select今天的当前date开始的工作表中的所有行,所以我写了下面的代码:

CurrentD = Format(Now(), "M/DD/YYYY") Workbooks("01 StatorLine.xlsx").Sheets("Downtime tracking").Activate Range("A4").Select Do ActiveCell.Offset(1, 0).Select Loop Until ActiveCell.Value = CurrentD 

它select具有数据的第一行,然后继续向下移动行,直到到达具有今天date的第一行。 唯一的问题是,尽pipe格式完全相同,循环从不识别date。 我尝试将CurrentD更改为一个数字,然后将该数字input到电子表格中。 当我在这种情况下运行macros时,它会停止在这个数字,但由于某些原因,当涉及斜杠时,它不会识别单元格值,并继续循环。 我以前从来没有使用VBA,所以任何帮助将不胜感激。 看起来像解决scheme应该是非常简单的。

谢谢!

如果您使用Text而不是Value它会比较格式化的值。

 Loop Until ActiveCell.Text = CurrentD 

在Excel中,string“6/27/2013”​​和date6/27/2013不是一回事。 即使Excel显示date的string表示forms,它在内部将其存储为一个数字。 所以你不能比较string和date,但你可以这样做:

 CurrentD = Format(Now(), "M/DD/YYYY") Workbooks("01 StatorLine.xlsx").Sheets("Downtime tracking").Activate Range("A4").Select Do ActiveCell.Offset(1, 0).Select Loop Until Format(ActiveCell.Value, "M/DD/YYYY") = CurrentD 

现在你正在比较一个string和一个string。