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