Страница 1 из 1

Выделить отфильтрованные строки

Добавлено: 26 фев 2007, 23:15
VictorM
Господа, вопрос по автофильтру.
Сортирую автофильтром список по нужному мне критерию.
Теперь нужно все отфильтрованные строки выделить, для дальнейшей работы (удаления). Чё-то ничегошеньки не получается :-(
Что можно сделать?
Спасибо.

Re: Выделить отфильтрованные строки

Добавлено: 26 фев 2007, 23:28
Genyaa
Если речь о Екселе:
- выделить нужные (можно все) строки, отоборанные автофильтром
- F5 (или <Ctrl+G> или Меню-Правка-Перейти)
- в диалоге - Выделить
- в диалоге - Только видимые ячейки
- чтобы удалить выделенное - <Ctrl+-> или Меню-Правка-Удалить строку
- ОК

Re: Выделить отфильтрованные строки

Добавлено: 27 фев 2007, 00:08
VictorM
Спасибо за столь быстрый ответ.
Виноват, торопился, некорректно задал вопрос - все описанное выше мне нужно сделать в коде Vba. Тем не менее, попробовал Ваш совет. К сожалению, не то.
Автофильтр у меня включается и выбирает в коде, считает кол-во строк (макрос взят с сайта pashulka), а вот выделить выбранное не получается.

Re: Выделить отфильтрованные строки

Добавлено: 27 фев 2007, 10:23
Genyaa
Я не знаю, какой именно код с сайта Pashulka Вы используте. Но если речь идет именно об Автофильтре, то в коде должна быть инструкция, похожая на это:

Код: Выделить всё

    Workbooks(i).Worksheets(k).AutoFilter Field:=1, Criteria1:="4"
- где вместо Workbooks(i).Worksheets(k) может быть любая конструкция, возвращающая объект листа с автофильтром, а значения параметров Field и Criteria различны.

Видимо после этой инструкции должна быть часть кода, которая считает количество строк, отфильтрованных автофильтром. Так?

Если после подсчета количества строк нужно выделить все видимые строки (после фильтрации) и удалить их, то я бы сделал это так:

Допустим ws - это объектная переменная, возвращающая лист с нашим автофильтром, (например, Set ws = ActiveSheet)

Код: Выделить всё

    Set mr = ws.AutoFilter.Range.Offset(1, 0). _
        Resize(ws.AutoFilter.Range.Rows.Count - 1, ws.AutoFilter.Range.Columns.Count)
    mr.SpecialCells(xlCellTypeVisible).EntireRow.Delete
Здесь mr - будет областью Range Автофильтра на листе ws без строки заголовков.
А вторая инструкция удалит все строки выбранные автофильтром (т.е. видимые после выборки автофильтра). Если вместо слова Delete написать Select, то вместо удаления будет происходить выделение строк.

Re: Выделить отфильтрованные строки

Добавлено: 27 фев 2007, 23:01
VictorM
Вот теперь ОНО!
Спасибо за помощь!