我正在尝试删除列 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)
快速解决
向后循环。
此外,您不需要 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)