我有一个子过程删除包含大约1000行的范围中的行。 行在critera上被删除。下面的代码工作。Excel VBA删除for循环中的行缺失行
但是,当我运行宏时,通常必须在删除包含删除条件的所有行之前运行它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
当我尝试更新范围每个循环,它仍然无法正常工作。
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
有没有人知道这个问题?谢谢。
从德自下而上的工作。如果你删除一行,一切都向上移动并昱欧上跳过该行下一次迭代 – Jeeped
这几乎肯定是一个重复的问题,当我找到合适的重复项时,我会将其标记为这样。无论何时从集合中删除项目,您都必须从Rows.Count中删除1 Step -1 ''否则你会跳过行。 –
继续前进,并认为这@DavidZemens - 我已经通过显示Case语句进行多重比较增加了一些价值,但这仍然是一个骗局。 – Jeeped