Ene*_*er1 7 excel vba excel-vba
我有一个子程序,删除包含大约1000行的范围内的行.在critera上删除行.以下代码有效.
但是,当我运行宏时,我通常必须运行它4次才能删除包含删除条件的所有行.
我想这是因为当一行在删除行时突然消失时,for循环错过了它的索引.
我的第一个代码看起来像这样.
Set StatusRange = Range("B2", Range("B2").End(xlDown))
For Each StatusCell In StatusRange
If StatusCell = "FG" Then
StatusCell.EntireRow.Delete
ElseIf StatusCell = "QC" Then
StatusCell.EntireRow.Delete
ElseIf StatusCell = "CS" Then
StatusCell.EntireRow.Delete
Else
End If
Next StatusCell
Run Code Online (Sandbox Code Playgroud)
当我尝试更新每个循环的范围时,它仍然无法正常工作.
Set StatusRange = Range("B2", Range("B2").End(xlDown))
For Each StatusCell In StatusRange
If StatusCell = "FG" Then
StatusCell.EntireRow.Delete
ElseIf StatusCell = "QC" Then
StatusCell.EntireRow.Delete
ElseIf StatusCell = "CS" Then
StatusCell.EntireRow.Delete
Else
End If
Set StatusRange = Range("B2", Range("B2").End(xlDown))
Next StatusCell
Run Code Online (Sandbox Code Playgroud)
有没有人知道这个问题?谢谢.
小智 11
从下往上工作.如果删除一行,一切都会向上移动,并在下一次迭代时跳过该行.
以下是从底部开始处理的代码的"内脏".
With Worksheets("Sheet1")
For rw = .Cells(.Rows.Count, "B").End(xlUp).Row To 2 Step -1
Select Case UCase(.Cells(rw, "B").Value2)
Case "FG", "QC", "CS"
.Rows(rw).EntireRow.Delete
End Select
Next rw
End With
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
8472 次 |
最近记录: |