这是删除行的最坏方法。原因
- 您正在删除循环中的行
- 您的 Cells 对象不合格
尝试这个。
巧合的是,我也在 MSDN 论坛中回答了类似的问题。请看这个
试试这种方式(未测试)
在下面的代码中,我将最后一行硬编码为100000
与上面链接中所做的不同。
Sub Sample()
Dim ws As Worksheet
Dim i As Long
Dim delRange As Range
'~~> Set this to the relevant worksheet
Set ws = ThisWorkbook.Sheets("Sheet1")
With ws
For i = 1 To 100000
If .Cells(i, 4).Value <> "String" Then
If delRange Is Nothing Then
Set delRange = .Rows(i)
Else
Set delRange = Union(delRange, .Rows(i))
End If
End If
Next i
If Not delRange Is Nothing Then delRange.Delete
End With
End Sub
注意:我假设一个单元格将具有如下值
String
aaa
bbb
ccc
String
例如,如果您有“字符串”可以在不同情况下或在其他字符串之间的情况
String
aaa
STRING
ccc
dddStringddd
那么您将不得不采取稍微不同的方法,如该链接所示。