根据日期删除整行-excel VBA

acr*_*acr 3 excel vba

我正在尝试删除列 A 值(其格式为日期)小于今天日期的所有行。我必须在整个非空 A 列中运行这些。但面临代码在整行中作为循环运行的问题。每次只删除 1 行。请让我知道如何在整个行集中运行它。

Sub DeleteRowBasedOnDateRange()

Dim spem As Workbook
Dim ws As Worksheet
Dim N As Long, I As Long

Set spem = Excel.Workbooks("SwitchP.xlsm")
Set ws = spem.Worksheets("data")

N = ws.Cells(Rows.count, "A").End(xlUp).row

For I = 2 To N

    If Cells(I, "A").Value < Date Then

    Cells(I, "A").EntireRow.Delete

I = I + 1

    End If

Next I

End Sub
Run Code Online (Sandbox Code Playgroud)

Sco*_*ner 5

快速解决

向后循环。

此外,您不需要 I=I+1,因为这是自动完成的。

Sub DeleteRowBasedOnDateRange()

Dim spem As Workbook
Dim ws As Worksheet
Dim N As Long, I As Long

Set spem = Excel.Workbooks("SwitchP.xlsm")
Set ws = spem.Worksheets("data")

N = ws.Cells(ws.Rows.count, "A").End(xlUp).row

For I = N to 2 Step -1    
    If ws.Cells(I, "A").Value < Date Then    
        ws.Rows(I).Delete
    End If    
Next I

End Sub
Run Code Online (Sandbox Code Playgroud)