01 Что делает макрос
Многие из нас хотят сгруппировать листы по цвету, чтобы визуально увидеть, что данные в определенной вкладке каким-то образом связаны с другой вкладкой, потому что обе имеют один и тот же цвет. Данный макрос облегчает эту задачу.
Excel присваивает номер индекса для каждого цвета. Светло-желтый цвет имеет порядковый номер 36, в то время как темно-бордовый имеет порядковый номер 42. Данный макрос перебирает листы в книге, сопоставляя индексы. Если предыдущий лист имеет тот же номер индекса цвета, что и текущий лист, макрос перемещает текущий лист перед ним. Таким образом, все листы будут сгруппированы на основе цвета их вкладок.
02 Код макроса
Sub
SgruppirovatListiPoCvetu()
'Шаг 1: Объявляем переменные
Dim
CurrentSheetIndex
As
Integer
Dim
PrevSheetIndex
As
Integer
'Шаг 2: Устанавливаем начальный пункт и начинаем цикл
For
CurrentSheetIndex = 1
To
Sheets.Count
For
PrevSheetIndex = 1
To
CurrentSheetIndex - 1
'Шаг 3: Сравниваем индекс цвета текущего листа с предыдущим
If
Sheets(PrevSheetIndex).Tab.ColorIndex = _
-
Sheets(CurrentSheetIndex).Tab.ColorIndex
Then
'Шаг 4: Если индекс цвета предыдущего листа равен показателю цвета
'текущего листа переместить текущий лист перед предыдущим
Sheets(PrevSheetIndex).Move _
Before:=Sheets(CurrentSheetIndex)
End
If
'Шаг 5: Возвращаемся в п.2
Next
PrevSheetIndex
Next
CurrentSheetIndex
End
Sub
03 Как работает макрос
1. Шаг 1 объявляет две переменные. CurrentSheetIndex содержит номер индекса для текущей итерации листа, а переменная PrevSheetIndex содержит номер индекса для предыдущей итерации листа.
2. Шаг 2 начинает итерации счетчика для обеих переменных. Обратите внимание, что счетчик для PrevSheetIndex число, которое предшествует CurrentSheetIndex. После того, как счетчики установлены, то макрос начинает цикл.
3. На шаге 3, макрокоманда проверяет, является ли показатель цвета предыдущего листа таким же, как и у текущего листа. Обратите внимание на использование свойства Tab.ColorIndex.
4. Шаг 4 выполняется только, если индекс цвета предыдущего листа равен показателю цвета текущего листа. На этом этапе, макрокоманда используется метод Move для перемещения текущего листа перед предыдущим листом.
5. На шаге 5 мы идем обратно к началу цикла. Каждый цикл проходит все листы от первого до последнего. После того, как все циклы были выполнены, макрос заканчивается.
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
Написать в тех.поддержку
Подписывайтесь:
авторизуйтесь