Страницы: 1
RSS
Установка фильтров по всем сводным таблицам в книге с помощью VBA
 
Добрый День!
Имеется отчет, состоящий из двух десятков сводных таблиц, которые находятся на одном листе.
У большинства (не у всех) таблиц в поле фильтры стоит выбор месяцев. По-работе достаточно часто (несколько раз в день) приходится
менять месяца в фильтрах. При этом, во всех таблицах, где есть такой фильтр указываю один и тот же месяц.
На текущий момент я могу скриптом менять фильтр в сводной таблице, но только в одной:
Код
Sub test()
ActiveSheet.PivotTables("СводнаяТаблица1").PivotFields("Месяцы").CurrentPage = _
Sheets("Отчет").Range("E2").Value
End Sub

В принципе я понимаю, что их можно просто перечислить, но на лист могут со временем будут добавляться новые таблицы. Как заставить скрипт менять фильтры во всех таблицах на листе, где есть фильтр "Месяцы" я никак не могу разобраться. Пожалуйста помогите.
 
Неужели так никто не откликнулся за 2 года?!
К стати код работает! Мне пригодился. Спасибо.
Лишь стремясь к невозможному, можно достичь максимального.
 
Цитата
sakharovs написал: Неужели так никто не откликнулся за 2 года?!
Неужели не очевидно? ☺
На всякий случай:
Код
Sub test()
Dim pvtTbl As PivotTable
On Error Resume Next
With Sheets("Отчет")
For Each pvtTbl In .PivotTables
pvtTbl.PivotFields("Месяцы").CurrentPage = _
.Range("E2").Value
Next
End WIth
End Sub
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Посмотрел файл. Не понял как сделан в ячейке E2 выпадающий список.
Искал во вкладке Разработчик в группе Элементы управления. Но не смог найти.

Подскажите, как сделать также?
 
Михаил, так-то конечно выглядит лучше. А не сочтите за грубость (не шибко я силен в VBA), что означает синтаксис ".CurrentPage=_" ? Или это перенос строки? Я уперся в "нижнее подчеркивание".
Лишь стремясь к невозможному, можно достичь максимального.
 
Выпадающий список - через меню Данные - Проверка данных
Сочетание символов " _" в ВБА - это действительно маркер переноса строки.
 
Спасибо
 
Цитата
anvas написал:
Посмотрел файл. Не понял как сделан в ячейке E2 выпадающий список. ...Подскажите, как сделать также?
Вы хоть раз в раздел "Приемы" заходили? Там целая подборка статей про выпадающие списки ))
 
Цитата
Михаил Лебедев написал: Dim pvtTbl As PivotTable
К стати, если на листе появляется вторая сводка, то код не работает... А судя по циклу должен бы...
Пичальбида... :(

А теперь работает... Что-то я нивхурил...
Изменено: Сергей Сахаров - 21.06.2015 20:56:19
Лишь стремясь к невозможному, можно достичь максимального.
 
Есть и такой вариант, раз уж интересуются. До 10 таблиц, точнее максимальный № в имени таблицы =10, число можно изменить в коде.
Изменено: gling - 16.06.2015 21:33:52
 
Ну да, тоже здорово. Но в предыдущем коде кол-во таблиц, на мой не профессиональный взгляд, вообще не ограничено. Там цикл перебирает ВСЕ сводки на листе.
Или я ошибаюсь?
Лишь стремясь к невозможному, можно достичь максимального.
 
Прошу прощения за то что поднимаю  старую тему, но буду благодарен если подскажите, как в поля сводной таблицы вы затянули параметр месяц, если в исходных данных нет такого столбца?
Разобрался... , еще один фильтр был сделан с помощью группировки..... еще раз прошу прощения.
Изменено: nikguard - 09.12.2015 22:07:17
Страницы: 1
Наверх