01 Что делает макрос
Если нужно отсортировать листы по названию, этот макрос сделает это в алфавитном порядке.
Макрокоманда перебирает листы в книге, сравнивая текущий лист с предыдущим. Если имя предыдущего листа больше текущего листа (в алфавитном порядке), макрокоманда перемещает текущий лист перед ним.
02 Код макроса
SubSortirovatListiPoNazvaniyu()'Шаг 1: Объявляем переменныеDimCurrentSheetIndexAsIntegerDimPrevSheetIndexAsInteger'Шаг 2: Устанавливаем счетчики и запускаем циклForCurrentSheetIndex = 1ToSheets.CountForPrevSheetIndex = 1ToCurrentSheetIndex - 1'Шаг 3: Проверяем имя текущего листа и сравниваем с именем предыдущего 'листаIfUCase(Sheets(PrevSheetIndex).Name) > _UCase(Sheets(CurrentSheetIndex).Name)Then'Шаг 4: Если имя листа больше, перемещаем текущий лист перед предыдущимSheets(CurrentSheetIndex).Move _Before:=Sheets(PrevSheetIndex)EndIf'Шаг 5: Возвращаемся в п.2NextPrevSheetIndexNextCurrentSheetIndexEndSub
03 Как работает макрос
Обратите внимание, что этот макрос делает сортировку только для текстовых данных, так что вы не можете получить результаты, которые вы ожидали при работе с числами на основе имен листов. Например, Лист 10 предшествует Лист 2, потому что программа не сравнивает значения чисел, а просто расставляет по алфавиту.
1. Шаг 1 объявляет две целочисленные переменные. CurrentSheetIndex содержит номер индекса для текущей итерации листа, а переменная PrevSheetIndex содержит номер индекса для предыдущей итерации листа.
2. На шаге 2 макрос начинает итерации счетчика для обеих переменных. Обратите внимание, что счетчик для PrevSheetIndex одно число за CurrentSheetIndex. После того, как счетчики установлены, мы начинаем цикл.
3. В шаге 3, мы проверяем, является ли имя предыдущего листа больше, чем у текущего листа (в алфавитном порядке). На этом этапе, обратите внимание на использование функции UCase. Мы используем ее, чтобы получить оба названия в верхнем регистре. Это предотвращает ошибки из-за различия регистра.
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
Написать в тех.поддержку
Подписывайтесь:
авторизуйтесь