0

我有一个 excel 表,每行开头的日期格式为 2013 年 6 月 27 日。我希望能够选择工作表中从今天的当前日期开始的所有行,所以我编写了以下代码:

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

它选择具有数据的第一行,然后应继续向下移动行,直到到达具有今天日期的第一行。唯一的问题是,尽管格式完全相同,但循环永远不会识别日期。我尝试将 CurrentD 更改为一个数字,然后将该数字输入到电子表格中。当我在这种情况下运行宏时,它会停在那个数字上,但由于某种原因,当涉及斜线时,它不会识别单元格值并继续循环。我以前从未使用过 VBA,因此将不胜感激。似乎解决方案应该很简单。

谢谢!

4

2 回答 2

2

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

Loop Until ActiveCell.Text = CurrentD
于 2013-06-27T13:07:29.370 回答
1

字符串“6/27/2013”​​和日期 6/27/2013 在 Excel 中不是一回事。尽管 Excel 向您显示日期的字符串表示形式,但它在内部将其存储为数字。所以你不能比较字符串和日期,但你可以这样做:

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

现在您正在将字符串与字符串进行比较。

于 2013-06-27T13:07:17.737 回答