将一系列日期与一个日期进行比较 - VBA

时间:2015-04-16 17:56:37

标签: vba date excel-vba excel

我对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”中列出的日期之前的日期

由于

1 个答案:

答案 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