1
我试图删除180天或更长时间的任何记录。日期在F栏。当我运行这个时,没有任何反应。我在想它与Date()函数有关。Excel VBA:删除旧记录
Sub ClearOldData()
Application.ScreenUpdating = False
Sheets("Data").Select
Dim LastRow As Long
With ActiveSheet
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
End With
For i = 2 To LastRow
Dim recdate As Date
recdate = Cells(i, "F").Value
If DateDiff(d, Date, recdate) > 179 Then
ws.Rows(i).Delete
End If
Next i
Application.ScreenUpdating = True
End Sub
当删除行,最好从下往上的工作,所以你行的索引不会被干扰。 '对于我= LastRow到2步-1' –
好点。我已经做了这个改变。虽然没有解决手头的问题。 – superblowncolon
Tim有一点,运行你的for循环为'For i = LastRow to 2 Step -1'从底部开始,而且你正在使用'ws'对象(可能是作为工作表的参考),但是你从未将它放在任何地方。您还可以将'Debug.Print recdate&“”&Date&“”&DateDiff(“d”,Date,recdate)'添加到循环的开头,以确切了解它正在计算的内容。 – Dave