Квалифицируйте свои объекты с рабочим листом.
Sub Delete_External ()
'
' Delete_External Macro
Dim ws as Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim LastRow As Long
Dim i As Long
LastRow = ws.Range("K1000").End(xlUp).Row
For i = LastRow To 1 Step -1
If ws.Range("K" & i) = "External" Then
ws.Range("K" & i).EntireRow.Delete
End If
Next
End Sub
Я бы не стал удалять строки внутри цикла, так как это может занять много времени в зависимости от набора данных и количества совпадений критериев. Рассмотрим эту альтернативу, которая проходит через ваш диапазон и создает коллекцию (Union
) ячеек, которые соответствуют вашим критериям. После завершения цикла удалите Union
сразу.
Это также было обновлено до более распространенной методологии поиска последней строки и удаляет обратную петлю, поскольку этот метод не требует этого!
Sub Delete_External()
'
' Delete_External Macro
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim LR As Long, i As Long
Dim DeleteMe As Range
LR = ws.Range("K" & ws.Rows.Count).End(xlUp).Row
For i = 2 To LR
If ws.Range("K" & i) = "External" Then
If Not DeleteMe Is Nothing Then
Set DeleteMe = Union(DeleteMe, ws.Range("K" & i))
Else
Set DeleteMe = ws.Range("K" & i)
End If
End If
Next i
If Not DeleteMe Is Nothing Then
DeleteMe.EntireRow.Delete
End If
End Sub