我试图清理一组数据,并发现一些奇怪的vba功能wholerow.delete 下面的代码将按预期删除整行,如果它是采用删除线格式,但会跳过紧跟其后的行,如果它们也是这种格式。它看起来像一个不是以删除线格式的行来“重置”删除更多行的能力。有谁知道为什么,或者我能做些什么来调试呢?“entirerow.delete”跳过For循环的条目
For Each rng In rng1
'Check each character in the cell
For i = 1 To Len(rng.Value)
'If any letter is Strikethrough,delete entire column
If rng.Characters(i, 1).Font.Strikethrough = True Then
rng.Select 'just serves the purpose of observing which rows are being selected
rng.EntireRow.Delete
GoTo NextRng
End If
Next i
NextRng:
Next rng
我应该说,我已经发现使用了不同的方法解决方法,但它是非常缓慢:
'Delete cells that have the strikethrough format - works but is super slow!
ws2.Range("B2").Activate
Do Until ActiveCell.Value = ""
If ActiveCell.Font.Strikethrough = True Then
ActiveCell.EntireRow.Delete
Else: ActiveCell.Offset(1, 0).Activate
End If
Loop
如果任何人有另一种方法来解决这个问题,这也是快速的,我也非常感谢您的意见。
环落后,如果你删除行。 – Comintern
您不应该像这样删除循环中的行。使用反向循环。搜索stackoverflow。我已经在 –
之前回复了一篇文章,请参阅我的[post](http://stackoverflow.com/questions/19241905/vba-conditional-delete-loop-not-working)您还可以使用范围对象来标识您想要的行删除。它比删除循环中的行快得多 –