Автоматически удалять листы с детализацией
01 Что делает макрос
Одной из особенностей сводной таблицы является то, что она дает возможность при помощи двойного щелчка мышью просмотреть детали. Подробности выводятся на новый лист, который вы можете просмотреть. В большинстве случаев, эти листы становятся помехой – нужно тратить время, чтобы удалить их.
Особенно это становится проблемой, когда вы отправляете отчеты сводных таблиц для пользователей, которые часто смотрят детали. Нет никакой гарантии, что они вспомнят, что нужно очистить листы. Эти листы могут загромождать рабочую книгу. Этот макрос поможет автоматически удалять листы с детализацией.
Этот макрос переименовывает лист с детализацией (во время его создания), добавляя перед именем «PivotDrill». Когда рабочая книга закрывается, макрос находит любой лист, который начинается с «PivotDrill» и удаляет его. Для этого нужно создать два кода.
Одна часть будет работать с событием Worksheet_BeforeDoubleClick, а другая с событием Workbook_BeforeClose.
02 Код макроса
Private
Sub
Worksheet_BeforeDoubleClick(
ByVal
Target
As
Range, Cancel
As
Boolean
)
'Шаг 1: Объявляем переменные
Dim
pt
As
String
'Шаг 2: Выход, если пользователь дважды щелкнул по ячейке, не связанной со сводной таблицей
On
Error
Resume
Next
If
IsEmpty(Target)
And
ActiveCell.PivotField.Name <>
""
Then
Cancel =
True
Exit
Sub
End
If
'Шаг 3: Установите объект PivotTable
pt = ActiveSheet.Range(ActiveCell.Address).PivotTable
'Шаг 4: Вывести детализацию
If
ActiveSheet.PivotTables(pt).EnableDrilldown
Then
Selection.ShowDetail =
True
ActiveSheet.Name = _
Replace(ActiveSheet.Name,
"Лист"
,
"PivotDrill"
)
End
If
End
Sub
03 Как работает макрос
1. Шаг 1 начинается с создания переменной объекта PT для нашей сводной таблицы.
2. Шаг 2 проверяет двойной щелчок ячейки. Если ячейка не связана с какой-либо сводной таблицей, мы отменяем событие двойного щелчка.
3. Если ячейка действительно связана со сводной таблицей, то Шаг 3 заполняет переменную PT данной сводной таблицей.
4. И, наконец, шаг 4 проверяет свойство EnableDrillDown. Если оно включено, мы вызываем метод ShowDetail. Это выводит детали нового листа.
Макрос переименовывает новый лист так, чтобы первые десять символов были PivotDrill. Мы делаем это с помощью функции Replace. Функция Replace заменяет определенный текст другим текстом. В этом случае мы заменяем слово «Лист» на «PivotDrill»: Replace (ActiveSheet.Name, «Лист», «PivotDrill»). Например, Лист1 становится PivotDrill1; Лист12 становится PivotDrill12, и так далее.
04 Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
1. Активируйте редактор Visual Basic, нажав ALT + F11.
2. Щелкните правой кнопкой мыши на имя проекта / рабочей книги в окне проекта.
3. Выберите Insert➜Module.
4. Введите или вставьте код.
5. Выберите событие BeforeDoubleClick из раскрывающегося списка событий.
6. Введите или вставьте код.
Следующий макрос работает, перед тем как рабочая книга закрывается.
05 Код макроса
Private
Sub
Workbook_BeforeClose(Cancel
As
Boolean
)
'Шаг 5: Объявляем переменные
Dim
ws
As
Worksheet
'Шаг 6: Проходим через рабочие листы
For
Each
ws
In
ThisWorkbook.Worksheets
'Шаг 7: Удаляем любой лист, который начинается с Pivot Drill
If
Left(ws.Name, 10) =
"PivotDrill"
Then
Application.DisplayAlerts =
False
ws.Delete
Application.DisplayAlerts =
True
End
If
Next
ws
End
Sub
06 Как работает макрос
5. Шаг 5 объявляет переменную WS для хранения объектов рабочего листа.
6. Шаг 6 начинает цикл, говоря Excel, что мы хотим оценить все рабочие листы в этой книге.
7. На последнем этапе мы оцениваем имя каждого листа. Если левые десять символов этого имени PivotDrill, мы удаляем рабочий лист. После того, как все листы были оценены и все листы с Детализацией были удалены, макрос останавливается.
07 Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
1. Активируйте редактор Visual Basic, нажав ALT + F11.
2. Щелкните правой кнопкой мыши на имя проекта / рабочей книги в окне проекта.
3. Выберите Insert➜Module.
4. Введите или вставьте код.
5. Выберите событие Workbook_BeforeClose из раскрывающегося списка событий.
6. Введите или вставьте код.
08 Скачать файл
Файл доступен только для учеников и подписчиков нашего клуба.
Подробная информация о клубе и условия членства доступны по ссылке
Сайт https://akademia-excel.ru/
ИП Якушев Дмитрий Александрович
ОГРНИП: 314501721200022
ИНН: 501706813807
Образовательная лицензия № Л035-01255-50/01194039
Почта: info@akademia-excel.ru
Телефон для связи: + 7 (958) 697-73-88, + 7 (495) 145-23-86
Регистрация на сайте означает согласие с пользовательским соглашением и на получение рассылки и рекламных материалов.
Политика в отношении обработки и защиты персональных данных.
Банковские реквизиты:
Расчетный счет 40802810500000003597
Банк АО «Тинькофф Банк»
Юридический адрес Банка Москва, 123060,1-й Волоколамский проезд, д. 10, стр. 1
Корр. счет Банка 30101810145250000974
ИНН Банка 7710140679
БИК Банка 044525974
Подписывайтесь на нас в соц.сетях:
Сайт https://akademia-excel.ru/
ИП Якушев Дмитрий Александрович
ОГРНИП: 314501721200022
ИНН: 501706813807
Образовательная лицензия № Л035-01255-50/01194039
Банковские реквизиты:
Расчетный счет 40802810500000003597
Банк АО «Тинькофф Банк»
Юридический адрес Банка Москва, 123060,1-й Волоколамский проезд, д. 10, стр. 1
Корр. счет Банка 30101810145250000974
ИНН Банка 7710140679
БИК Банка 044525974
Регистрация на сайте означает согласие с пользовательским соглашением и на получение рассылки и рекламных материалов.
Политика в отношении обработки и защиты персональных данных.
Почта: info@akademia-excel.ru
Телефон для связи: + 7 (958) 697-73-88, + 7 (495) 145-23-86
Написать в тех.поддержку
Подписывайтесь:
авторизуйтесь