Страницы: 1
RSS
Удаление строк исходя из значений ячейки
 
Имеется 2 листа. В Лист1 кнопка, которая должна активировать макрос на Лист2.
Сам макрос должен искать и удалять строки, если в первой ячейке содержится определенное значение. Допустим в примере "грибы".  Нашел вроде бы не загруженный вариант макроса

Sheets("Лист2").Range("A:A").AutoFilter Field:=1, Criteria1:="грибы"
Rows("2:99999").Select
Selection.Delete Shift:=xlUp
Range("A:A").AutoFilter,

но он работает только при активации с Лист2. При активации его с кнопки на Лист1 выполняется только автофильтр ( к кнопке привязал вот такой макрос)

Private Sub Reread_Click()
   DeleteEmpty
End Sub

все остальное начинает выполнение на активном первом листе. Как заставить его выполняться именно на Листе2? Или Selection на неактивном листе не работет... Возможно есть другие варианты реализации.

P.S.: прошу не судить строго))))
 
Если вашим подходом, то с минимальными исправлениями можно так:
Код
Sub DeleteEmpty()

    With Sheets("Лист2")
        .Range("A:A").AutoFilter Field:=1, Criteria1:="грибы"
        .Rows("2:99999").Delete Shift:=xlUp
        .Range("A:A").AutoFilter
    End With
End Sub

З.Ы. и да, Selection на неактивном листе не работает. :)
Изменено: Пытливый - 08.11.2022 19:04:59
Кому решение нужно - тот пример и рисует.
 
Капец... все так просто было.... что-то не подумал, что можно сразу делать удаление. Спасибо огромное
 
чуть допилить
Код
Sub DeleteFilteredRows()
    Dim LastRow As Long
    With Sheets("Лист2")
        If .FilterMode = True Then .ShowAllData
        LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        .Range("A:A").AutoFilter Field:=1, Criteria1:="грибы"
        .Rows("2:" & LastRow).Delete Shift:=xlUp
        .ShowAllData
    End With
End Sub
Страницы: 1
Наверх