01 Что делает макрос
Создать оглавление книги — наиболее запрашиваемый макрос. Нам часто приходится работать с файлами, которые имеют много вкладок. Таблица с содержанием определенно помогает. Этот макрос не только создает список имен рабочих таблиц в книге, но он также показывает гиперссылки, так что вы можете легко перейти к листу простым нажатием кнопки.
На первый взгляд данный макрос выглядит сложным. Тем не менее, рассмотрим несколько простых действий, как это происходит.
Макрос выполняет следующие шаги:
1. Удаляет предыдущий лист Оглавление
2. Создает новый лист Оглавление с таблицей
3. Захватывает имя каждого листа и вставляет его в оглавление
4. Добавляет гиперссылку к каждой записи в оглавлении
02 Код макроса
Sub
SozdatOglavlenie()
'Шаг 1: Объявить переменные
Dim
i
As
Long
'Шаг 2: Удалить предыдущий лист с названием Оглавление в случае
'ошибки перейти к следующему шагу
On
Error
Resume
Next
Application.DisplayAlerts =
False
Sheets(
"Оглавление"
).Delete
Application.DisplayAlerts =
True
On
Error
GoTo
0
'Шаг 3: Добавить новый лист в качестве первого
ThisWorkbook.Sheets.Add _
Before:=ThisWorkbook.Worksheets(1)
ActiveSheet.Name =
"Оглавление"
'Шаг 4: Запустить счетчик
For
i = 1
To
Sheets.Count
'Шаг 5: Выбрать следующую доступную строку
ActiveSheet.Cells(i, 1).
Select
'Шаг 6: Добавить имя листа и гиперссылку
ActiveSheet.Hyperlinks.Add _
Anchor:=ActiveSheet.Cells(i, 1), _
Address:=
""
, _
SubAddress:=
"'"
& Sheets(i).Name &
"'!A1"
, _
TextToDisplay:=Sheets(i).Name
'Шаг 7: Цикл назад приращение I
Next
i
End
Sub
03 Как работает макрос
1. Шаг 1 объявляет целую переменную с именем I, которая будет выступать в качестве счетчика, который перебирает листы. В этой процедуре мы используем счетчик (наша переменная I). Основная причина в том, что мы не только должны следить за листами, но мы также должны суметь ввести имя каждого листа на новую строку в таблицу оглавления. Идея заключается в том, что, счетчик проходит через листы, он также служит для перемещения курсора вниз в таблице содержания, каждая новая запись идет на новую строку.
2. Шаг 2, по существу пытается удалить любой предыдущий лист под названием «Оглавление». Шаг 2 должен начаться с On Error Resume Next — обработчика ошибок. Если возникает ошибка — происходит удаление листа «Оглавление» с использованием метода DisplayAlerts. Наконец, мы сбрасываем обработчик ошибок, снова введя On Error GoTo 0.
3. На шаге 3 добавляем новый лист в книгу, используя аргумент, чтобы поместить новый лист в качестве первого листа. Затем переименовываем лист. При добавлении нового рабочего листа, он автоматически становится активным. Поскольку этот новый лист имеет фокус на протяжении всей процедуры, любые ссылки на ActiveSheet в этом коде, обращаются к таблице на листе «Оглавление».
4. Шаг 4 запускает счетчик I и происходит подсчет всех листов в книге. Когда будет достигнуто максимальное количество листов, макрокоманда закончится.
5. Шаг 5 выбирает соответствующую строку в таблице Оглавление. То есть, если счетчик на 1, он выбирает первую строку в таблице Оглавление. Если счетчик I находится в 2, она выбирает вторую строку, и так далее. Мы можем сделать это с помощью элемента Cells. Элемент Cells обеспечивает чрезвычайно удобный способ выбора диапазонов с помощью кода. Для этого требуется только относительные позиции строки и столбца в качестве параметров. Таким образом, клетки (1,1) приводит к строке 1, столбец 1 (или ячейку A1). Ячейка (5, 3) приводит к 5-й строке, столбце 3 (или ячейка C5). Числовые параметры в элементе Cells особенно удобны, когда вы хотите, чтобы цикл шел через серию строк или столбцов, используя увеличивающееся номер индекса.
6. Шаг 6 использует метод Hyperlinks.Add, чтобы добавить имя листа и гиперссылки к выбранной ячейке. Параметры метода Hyperlinks.Add необходимы для построения гиперссылок.
7. Последний шаг в макросе возвращает к началу цикла приращения счетчика I к следующему. Когда счетчик достигает числа I макрокоманда заканчивается.
04 Как использовать
Для реализации этого макроса, вы можете скопировать и вставить его в стандартный модуль:
1. Активируйте редактор Visual Basic, нажав ALT + F11.
2. Щелкните правой кнопкой мыши имя проекта / рабочей книги в окне проекта.
3. Выберите Insert➜Module.
4. Введите или вставьте код во вновь созданном модуле.
05 Скачать файл
Автор проекта
Дмитрий Якушев
Привет! Меня зовут Дмитрий. С 2014 года Microsoft Cretified Trainer. Вместе с командой управляем этим сайтом. Наша цель - помочь вам эффективнее работать в Excel.
Изучайте наши статьи с примерами формул, сводных таблиц, условного форматирования, диаграмм и макросов. Записывайтесь на наши курсы или заказывайте обучение в корпоративном формате.
Сайт 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
Написать в тех.поддержку
Подписывайтесь:
авторизуйтесь