Если вы работаете над проектом, который использует много листов в книге, вы можете отсортировать их по имени листа. Следующий короткий макрос отлично справится с задачей:

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

Этот макрос работает, если в вашей книге относительно мало листов. Если при запуске макроса вы заметите, что для его выполнения требуется много времени, возможно, вы захотите использовать в макросе более эффективный алгоритм сортировки. Например, следующая версия представляет собой версию, которая считывает имена всех рабочих листов в массив, сортирует массив с помощью алгоритма BubbleSort, а затем выполняет фактическую компоновку:

Sub SortSheets()

Dim I As Integer     Dim sMySheets() As String     Dim iNumSheets As Integer

iNumSheets = Sheets.Count     Redim sMySheets(1 To iNumSheets)



For I = 1 To iNumSheets         sMySheets(I) = Sheets(I).Name     Next I

BubbleSort sMySheets

For I = 1 To iNumSheets         Sheets(sMySheets(I)).Move Before:=Sheets(I)

Next I End Sub
Sub BubbleSort(sToSort() As String)

Dim Lower As Integer, Upper As Integer     Dim I As Integer, J As Integer, K As Integer     Dim Temp As String

Lower = LBound(sToSort)

Upper = UBound(sToSort)

For I = Lower To Upper - 1         K = I         For J = I + 1 To Upper             If sToSort(K) > sToSort(J) Then                 K = J             End If         Next J         If I <> K Then             Temp = sToSort(I)

sToSort(I) = sToSort(K)

sToSort(K) = Temp         End If     Next I End Sub

Любой, кто какое-то время программировал, знает, что BubbleSort — это хорошая процедура сортировки общего назначения, но есть и более быстрые.

Например, если у вас довольно много рабочих листов, и они начинаются очень неорганизованно, вы можете обнаружить, что алгоритм QuickSort более полезен. Все, что вам нужно сделать, чтобы изменить приведенное выше для использования QuickSort, это добавить алгоритм QuickSort в качестве подпрограммы (вы можете найти алгоритм в любой хорошей книге по программированию на Visual Basic), а затем вызвать процедуру из основного макроса SortSheets. (Это означает изменение строки, в которой теперь вызывается BubbleSort.)

Есть еще одно различие между этим вторым макросом и первым. Первый макрос не обращает внимания на регистр текста, используемого для именования ваших листов. Таким образом, мой рабочий лист будет рассматриваться так же, как мой рабочий лист. Второй макрос обращает внимание на регистр текста и выполняет сортировку соответственно. Конечно, это не особо большая проблема, поскольку Excel также не обращает внимания на регистр в именах листов.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (1959 г.) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и более поздние версии) здесь:

link: / excelribbon-Alphabetizing_Worksheet_Tabs [Алфавитный указатель вкладок рабочего листа].