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

Как перед закрытием проверить фильтры?

Добавлено: 19 апр 2005, 20:07
Laidi
Уважаемые специалисты, помогите пожалуйста. Как сделать так, чтобы перед закрытием EXCEL файла автоматически запускался бы макрос который проверяет на КАЖДОЙ странице закрываемой книги фильтры и делает ShowAllData. Из всего этого умею только ShowAllData, а как запускать и перебирать страницы не знаю :-) Спасибо!

Добавлено: 19 апр 2005, 22:19
pashulka
Учитывая, что в одном листе не может быть больше одного автофильтра, то под страницей наверное подразумевается рабочий лист, тогда :

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

For Each iList In Worksheets
    MsgBox iList.Name
Next
А если нужно перебрать действительно все листы, то :

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

For Each iList In Sheets
    MsgBox iList.Name
Next
Для автоматического запуска макроса перед закрытием рабочей книги используйте событие рабочей книги, а именно :

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

Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub
P.S. Программный текст этого макроса (события) необходимо расположить в соответствующем модуле ThisWorkbook/ЭтаКнига

Добавлено: 19 апр 2005, 23:22
Laidi
Очень все хорошо объяснили :-) Спасибо! Подскажите еще разок как мне решить проблему с ошибкой, в случае, если на одном из листов фильтр есть, но не включен.
Макрос получился (вернее Вы его написали :-) ) таким:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
For Each iList In Sheets
iList.ShowAllData
Next
MsgBox "Fail kontrollitud!"
End Sub

Добавлено: 20 апр 2005, 00:12
pashulka

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

Private Sub Workbook_BeforeClose(Cancel As Boolean)

For Each iList In Worksheets
    If iList.AutoFilterMode = True Then
       If iList.FilterMode = True Then
          iList.ShowAllData
       End If
    End If
Next

End Sub
IMHO Я немного изменил перебираемое семейство, так как листы диаграмм, например принципиально не поддерживают автофильтры.

Добавлено: 20 апр 2005, 00:29
Laidi
Все отлично работает! Спасибо!