我对VBA并不擅长,但我被要求为我的公司创建一个工具,用户可以在其中输入日期信息列表;需要分析信息并且所有记录的日期都在不同的静态日期之前(下面,它在单元格“O2”中。我至少能够删除一些记录,但它符合我需要的标准,我的记录未被正确删除:
Sub RemoveDates()
Dim rng As Range
Dim rng2 As Range
On Error Resume Next
Set rng2 = Range("M3:M1002")
For Each rng In rng2
If CDate(rng) < CDate("O2") Then
rng.EntireRow.Delete
Else
End If
Next
End Sub
日期将全部存储在M3:M1002范围内,虽然条目数量可变,但它们总是小于1000.我想删除包含日期小于固定日期的行细胞“O2”。当我运行宏时,我会删除一些日期,但仍有一些日期还有“O2”中列出的日期之前的日期
由于
答案 0 :(得分:2)
您必须向后运行循环或使用如下结构:
Sub RemoveDates()
Dim rng As Range
Dim rng2 As Range
Dim KillRange As Range
Dim stdDate As Date
Set rng2 = Range("M3:M1002")
Set KillRange = Nothing
stdDate = CDate(Range("O2"))
For Each rng In rng2
If CDate(rng) < stdDate Then
If KillRange Is Nothing Then
Set KillRange = rng
Else
Set KillRange = Union(KillRange, rng)
End If
End If
Next rng
If Not KillRange Is Nothing Then
KillRange.EntireRow.Delete
End If
End Sub