Сортировка листов
Если количество листов в Вашей книге приближается к нескольким десяткам, то - рано или поздно - возникнет желание отсортировать листы, разложив их по порядку для удобства навигации. Стандартные средства Excel не позволяют сделать этого, но можно использовать простой макрос, который реализует эту сортировку.
Откройте редактор Visual Basic с помощью сочетания клавиш ALT+F11, вставьте новый модуль (меню Insert - Module) и скопируйте туда код этого макроса:
Sub SortSheets()
Dim I As Integer, J As Integer
For I = 1 To Sheets.Count - 1
For J = I + 1 To Sheets.Count
If UCase(Sheets(I).Name) > UCase(Sheets(J).Name) Then
Sheets(J).Move Before:=Sheets(I)
End If
Next J
Next I
End Sub
Теперь этот макрос можно запустить через меню Сервис - Макрос - Макросы (Tools - Macro - Macros) или нажав сочетание клавиш ALT+F8 и выбрав команду Выполнить (Run) он быстро отсортирует все листы в текущей книге по возрастанию.
Ссылки по теме
- Быстрый переход между листами в книге Excel
- Что такое макросы, куда вставлять код макроса, как их использовать
- Удобное управление листами с помощью Менеджера Листов из надстройки PLEX
все гениальное-просто!
предлагаю сделать рабочие дни до 17.00 для тех кто использует макросы)))).
Правда с текстовыми названиями тогда макрос работать не сможет.
Если у вас установлена надстройка PLEX, то можно попробовать использовать функцию GetNumbers выделения чисел из текста, которая в ней есть. Тогда 6-я строчка будет выглядеть как:
Отличный инструмент!
Единственное что бы хотелось добавить, но своими скромными силами так у меня и не вышло, так это вывод сообщения о защите паролем книги от изменения ее структуры, если таковая у книги есть, и вывода диалогового окна с полем ввода пароля для снятия защиты.
Если бы Вы расширили таким образом функционал данного макроса, был бы Вам очень признателен как с практической точки зрения, так и с познавательской - очень интересно, как это все-таки должно быть написано))
Заранее спасибо!
Подскажите пожалуйста где нужно изменить код для того что бы листы шли по определенной структуре:
К примеру: Нужна сортировка листов (месяцев) не от А до Я: а по их очередности: Январь; Февраль; Март.... Декабрь...
Интересует именно в этой структуре кода:
так как с помощью макрорекордера удалось сообразить пока вот такой:
Sub Сортировка_месяцев()
Sub Сортировка_месяцев() On Error Resume Next 'для пропуска недостающих листов Sheets("Сводный").Move Before:=Sheets(1) Sheets("Январь").Move Before:=Sheets(2) Sheets("Февраль").Move Before:=Sheets(3) Sheets("Март").Move Before:=Sheets(4) Sheets("Апрель").Move Before:=Sheets(5) Sheets("Май").Move Before:=Sheets(6) Sheets("Июнь").Move Before:=Sheets(7) Sheets("Июль").Move Before:=Sheets(8) Sheets("Август").Move Before:=Sheets(9) Sheets("Сентябрь").Move Before:=Sheets(10) Sheets("Октябрь").Move Before:=Sheets(11) Sheets("Ноябрь").Move Before:=Sheets(12) Sheets("Декабрь").Move Before:=Sheets(13) 'можно еще прописать MsgBox - для подсчета количества листов _ по умолчанию их должно быть 13 End SubОчень помогло! у меня листов больше 50 и искать нужное очень тяжело. а сейчас по алфавиту все быстро ищется
В макросе задать такой порядок: "Гвозди", "Слоны", "Болты", "Печенье", "Шурупы", "Яблоки", "Гайки", "Самолеты"...