После запуска данного макроса (для удобства можно назначить ему кнопку) рабочие листы текущей книги будут отсортированы либо по номерам, либо по алфавиту. Следует учитывать, что при включенной защите рабочей книги (Рецензирование → Изменения → Защитить книгу) выполнение данной операции невозможно.
Ниже приведен код макроса (листинг 2.9), при выполнении которого список отсортированных листов выводится на отдельный рабочий лист Сортировка.
Sub SortSheets2()
Dim astrSheetNames() As String ' Массив для хранения имен
листов
Dim intSheetCount As Integer
Dim i As Integer
Dim objActiveSheet As Object
' Если нет активной рабочей книги – закрыть процедуру
If ActiveWorkbook Is Nothing Then Exit Sub
' Проверка защищенности структуры рабочей книги
If ActiveWorkbook.ProtectStructure Then
' Сортировка листов защищенной рабочей книги невозможна
MsgBox "Структура книги " & ActiveWorkbook.Name & _
« защищена. Сортировка листов невозможна.», _
vbCritical
Exit Sub
End If
' Сохраняем ссылку на активный лист книги
Set objActiveSheet = ActiveSheet
' Отключение сочетания клавиш Ctrl+Pause Break
Application.EnableCancelKey = xlDisabled
' Функция обновления экрана отключается
Application.ScreenUpdating = False
With ActiveWorkbook
' Cоздаем новый лист «Сортировка» (если он еще не создан)
On Error Resume Next
If .Sheets(«Сортировка») Is Nothing Then
.Sheets.Add.Name = «Сортировка»
End If
On Error GoTo 0
' Размещение данных на листе «Сортировка» (в столбец A)
intSheetCount = .Sheets.Count
For i = 1 To intSheetCount
.Sheets(«Сортировка»).Cells(i, 1) = .Sheets(i).Name
Next i
' Сортировка данных в ячейках листа «Сортировка» по содержимому _
столбца A
.Sheets(«Сортировка»).Range(«A1»).Sort _
Key1:=.Sheets(«Сортировка»).Range(«A1»), _
Order1:=xlAscending
' Заполнение массива имен отсортированными строками
ReDim astrSheetNames(1 To intSheetCount)
For i = 1 To intSheetCount
astrSheetNames(i) = .Sheets(«Сортировка»).Cells(i, 1)
Next i
' Перемещение листов
For i = 1 To intSheetCount
.Sheets(astrSheetNames(i)).Move .Sheets(i)
Next i
End With
' Переход на исходный рабочий лист
objActiveSheet.Activate
' Включаем обновление экрана
Application.ScreenUpdating = True
' Включение сочетания клавиш Ctrl+Pause Break
Application.EnableCancelKey = xlInterrupt
End Sub
Отличительной особенностью приведенной программы, помимо отображения списка листов книги на отдельном листе, является использование возможностей Excel для сортировки данных.
В данном случае также необходимо помнить, что при включенной защите рабочей книги операция невыполнима.
Рабочий лист
Рабочий лист является основным составным элементом рабочей книги. По умолчанию в состав новой книги включены три листа. Чтобы изменить количество листов в новой книге по умолчанию, необходимо войти в режим настройки Excel (для этого справа на панели быстрого доступа необходимо нажать кнопку с треугольником и в раскрывающемся списке выбрать пункт Другие команды), в разделе Основные, в поле Число листов, указать требуемое значение. Следует отметить, что максимально возможное количество листов в книге – 255.