Sub УдалениеСтрокПоНесколькимУсловиям() Dim delra As Range Application.ScreenUpdating = False ' отключаем обновление экрана ' ищем и удаляем строки, содержащие заданный текст ' (можно указать сколько угодно значений) УдалятьСтрокиСТекстом = Array("111", "22", "33") ' перебираем все строки в используемом диапазоне листа With ActiveSheet LastRow = .Cells(.Rows.Count, "L").End(xlUp).Row dx = .Range("L4:L" & LastRow) For i = 1 To UBound(dx) For Each word In УдалятьСтрокиСТекстом If InStr(1, dx(i, 1), word, vbTextCompare) > 0 Then ' добавляем строку в диапазон для удаления If delra Is Nothing Then Set delra = .Rows(i) Else Set delra = Union(delra, .Rows(i)) Exit For End If Next Next
End With ' если подходящие строки найдены, то: (оставьте одну из 2 следующих строк) ' If Not delra Is Nothing Then delra.EntireRow.Hidden = True ' скрываем их If Not delra Is Nothing Then delra.EntireRow.Delete ' удаляем их Application.ScreenUpdating = True End Sub
[/vba]
ошибка строка [vba]
Код
If Not delra Is Nothing Then delra.EntireRow.Delete ' удаляем их
[/vba]
почему [vba]
Код
Sub УдалениеСтрокПоНесколькимУсловиям() Dim delra As Range Application.ScreenUpdating = False ' отключаем обновление экрана ' ищем и удаляем строки, содержащие заданный текст ' (можно указать сколько угодно значений) УдалятьСтрокиСТекстом = Array("111", "22", "33") ' перебираем все строки в используемом диапазоне листа With ActiveSheet LastRow = .Cells(.Rows.Count, "L").End(xlUp).Row dx = .Range("L4:L" & LastRow) For i = 1 To UBound(dx) For Each word In УдалятьСтрокиСТекстом If InStr(1, dx(i, 1), word, vbTextCompare) > 0 Then ' добавляем строку в диапазон для удаления If delra Is Nothing Then Set delra = .Rows(i) Else Set delra = Union(delra, .Rows(i)) Exit For End If Next Next
End With ' если подходящие строки найдены, то: (оставьте одну из 2 следующих строк) ' If Not delra Is Nothing Then delra.EntireRow.Hidden = True ' скрываем их If Not delra Is Nothing Then delra.EntireRow.Delete ' удаляем их Application.ScreenUpdating = True End Sub
[/vba]
ошибка строка [vba]
Код
If Not delra Is Nothing Then delra.EntireRow.Delete ' удаляем их
Целиковые несмежные строки с листа не удалить, в этом легко убедиться, если попробовать это сделать вручную. Но можно удалить несмежные строки внутри умной таблицы. Вариант в файле
Целиковые несмежные строки с листа не удалить, в этом легко убедиться, если попробовать это сделать вручную. Но можно удалить несмежные строки внутри умной таблицы. Вариант в файлеPelena