删除不需要的数据行

Dim mRange As Range Columns("B:B").Select i = 0 Set mRange = Range("B:B") mRange.Find(What:="TRUE", After:=ActiveCell, LookIn:=xlValues, LookAt _ :=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _ False).Activate Rows(ActiveCell.Row).Select Selection.Delete Shift:=xlUp For i = 0 To 1 Columns("B:B").Select Set mRange = Range("B:B") mRange.Find(What:="TRUE", After:=ActiveCell, LookIn:=xlValues, LookAt _ :=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _ False).Activate Rows(ActiveCell.Row).Select Selection.Delete Shift:=xlUp Do While Not mRange Is Nothing Set mRange = Range("B:B") mRange.Select mRange.Find(What:="TRUE", After:=ActiveCell, LookIn:=xlValues, LookAt _ :=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _ False).Activate Rows(ActiveCell.Row).Select Selection.Delete Shift:=xlUp Loop Next i 

上面的代码正确删除了单元格中包含单词“TRUE”的行,但是当它不能再find“TRUE”时收到这个错误。 它不会跳出循环,而是挂在最后的mRange.Find方法。 我做错了什么? 谢谢。

“运行时错误91,对象variables或未设置块variables”

如评论所示,摆脱。select。

这个代码应该是所有需要的。

 Do Dim sAdd as String sAdd = vbNullString Dim rFound as Range Set rFound = Range("B:B").Find(What:="TRUE", After:=Cells(Rows.Count,Columns.Count), LookIn:=xlValues, LookAt _ :=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:= _ False) If Not rFound is Nothing Then sAdd = rFound.Address rFound.EntireRow.Delete Shift:=xlUp End If Loop Until sAdd = vbNullString 

这也将起作用,如果行集不是非常大,可能会更快。

 Dim lRow as Long lRow = Range("B" & Rows.Count).End(xlUp).Row With Range("B1:B" & lRow) .AutoFilter 1, TRUE .Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete .AutoFilter End With 
 Application.ScreenUpdating = False Dim rFound As Range Dim mRange As Range Set mRange = Range("B:B") Do Set rFound = mRange.Find(What:="TRUE", After:=ActiveCell, LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False) If Not rFound Is Nothing Then rFound.EntireRow.Delete Loop Until rFound Is Nothing Application.ScreenUpdating = True