我发现了另一个链条,该链条使我根据它们所包含的静态文本删除单元格,但是现在我还需要以类似的方式删除日期,但是它们是可变的。
这是我用于删除静态文本的代码:
'Sub DeleteRowBasedOnCriteria()
Dim RowToTest As Long
For RowToTest = Cells(Rows.count, 6).End(xlUp).Row To 2 Step -1
With Cells(RowToTest, 6)
If .value <> "ALLOW" _
And .value <> "CHRG" _
And .value <> "COST" _
Then _
Rows(RowToTest).EntireRow.Delete
End With
Next RowToTest
End Sub
效果很好,但是当我运行此报告时,我会在过去的2或3天内(取决于一周中的一天)运行它。我需要删除最早运行日期之前两天之前的所有内容。例如:如果我在22日和23日的24日运行报表,则我想删除日期早于20日的任何内容。
我知道该报告似乎可以执行此操作,但请相信我,它与T-Rex进行后空翻一样无能为力。我试图仅更改静态文本的代码,但是由于对VBA代码的了解有限,所以我不知道自己是否走在正确的轨道上:
'Sub DeleteRowBasedOnCriteria()
Dim RowToTest As Long
For RowToTest = Cells(Rows.count, 5).End(x1Up).Row To 2 Step -1
With Cells(RowToTest, 5)
If .value < Today _
Then _
Rows(RowToTest).EntireRow.Delete
End With
Next RowToTest
End Sub
显然,今天的日期减去报告运行前的4天,我没有什么要考虑的,因此我也需要帮助。在当前形式下,我在行上收到“应用程序定义的错误或对象定义的错误”:
For RowToTest = Cells(Rows.count, 5).End(x1Up).Row To 2 Step -1
在此先感谢您的帮助或想法。
编辑:输入框已添加
使用日期而不是今天。当Rows()。Delete时,不需要EntireRow。
Sub M1()'Sub DeleteRowBasedOnCriteria()Dim RowToTest尽可能长Dim DayCount一样长
DayCount = Application.InputBox(Prompt:="How Days Back to CleanUp?", Default:=3, Type:=1)
For RowToTest = Cells(Rows.Count, 6).End(xlUp).Row To 2 Step -1
With Cells(RowToTest, 6)
If .Value <> "ALLOW" _
And .Value <> "CHRG" _
And .Value <> "COST" _
Then _
Rows(RowToTest).Delete
End With
Next RowToTest
For RowToTest = Cells(Rows.Count, 5).End(xlUp).Row To 2 Step -1
With Cells(RowToTest, 5)
If .Value < (Date - DayCount) Then Rows(RowToTest).Delete
End With
Next RowToTest
结束子
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句