В этой статье мы предоставили подробную информацию о том, как сортировать рабочие листы в книге в возрастающем или убывающем порядке, в зависимости от имени рабочего листа.

В прилагаемой книге есть два модуля: — Module1 содержит макрос «SortWorksheets», который назначен кнопке «Отправить» на листе «Макрос».

Этот макрос сортирует все рабочие листы, кроме первого рабочего листа, который является основным листом с именем «Макрос».

Когда пользователь нажимает кнопку «Отправить», все листы после листа «Макрос» будут отсортированы в порядке возрастания или убывания, выбранном пользователем в поле со списком.

ArrowSortingOrder

Module2 содержит два макроса «AscendingSortOfWorksheets» и «DecendingSortOfWorksheets». При запуске макроса «AscendingSortOfWorksheets» он отсортирует все рабочие листы, имеющиеся в книге, в порядке возрастания. При запуске макроса «DecendingSortOfWorksheets» он отсортирует все рабочие листы, присутствующие в книге, в порядке убывания.

Логическое объяснение

Алгоритм пузырьковой сортировки используется для сортировки листов в книге.

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

В этой статье наша цель — отсортировать листы в книге по их именам. Рабочая тетрадь, которую мы используем, состоит из различных листов с такими названиями, как Финансовая панель, Управление персоналом и Панель продаж.

ArrowRawData

Для достижения этой цели мы использовали алгоритм пузырьковой сортировки для сортировки листов.

Объяснение кода

Макрос SortWorksheets

Этот макрос запускается, когда пользователь нажимает кнопку отправки. Этот макрос сортирует все листы в книге по их именам, кроме первого листа в книге. В зависимости от значения, выбранного пользователем в поле со списком, он будет отсортировать листы в порядке возрастания или убывания.

Чтобы добавить поле со списком, выполните следующие действия: -. Перейдите на вкладку «Разработчик»> нажмите «Вставить»> нажмите значок поля со списком под элементом управления формой

ArrowInsertingCombobox

  1. Щелкните правой кнопкой мыши поле со списком и выберите элемент управления форматом.

ArrowFormattingControl

  1. Перейдите на вкладку управления, назначьте элемент и свяжите поле со списком с ячейкой XFC1.

ArrowCellLink

ComboBoxValue = Range («XFC1»). Значение Поле со списком на рабочем листе «Макрос» связано с ячейкой XFC1. Итак, для получения значения из ячейки XFC1 используется переменная ComboBoxValue.

For i = 2 To SCount — 1 цикл FOR начинается с переменной i, значение начинается с 2, так как мы хотим исключить первый рабочий лист книги из сортировки.

Если ComboBoxValue = 1, то условие IF используется для проверки того, следует ли выполнять сортировку по возрастанию или по убыванию. Если значение ComboBoxValue равно 1, выполните сортировку по возрастанию, иначе по убыванию.

Рабочие листы отсортированы по возрастанию

ArrowAscendingOrder

Рабочие листы отсортированы по убыванию

ArrowDescendingOrder

AscendingSortOfWorksheets и DecendingSortOfWorksheets

Макросы AscendingSortOfWorksheets и DecendingSortOfWorksheets можно запустить, нажав сочетание клавиш Alt + F8 или перейдите на вкладку «Разработчик»> нажмите «Макрос»> выберите макрос и нажмите «Выполнить». Они отсортируют все рабочие листы в книге. Эти макросы можно запускать и в других книгах.

Рабочие листы, отсортированные после запуска макроса AscendingSortOfWorksheets

ArrowAscendingCompleteSort

Рабочие листы, отсортированные по возрастанию Макрос DecendingSortOfWorksheets

ArrowDescendingCompleteSort

Пожалуйста, введите код ниже

Sub AscendingSortOfWorksheets()

'Sort worksheets in a workbook in ascending order

Dim SCount, i, j As Integer

'For disabling screen updates

Application.ScreenUpdating = False

'Getting total no. of worsheets in workbook

SCount = Worksheets.Count

'Checking condition whether count of worksheets is greater than 1, If count is one then exit the procedure

If SCount = 1 Then Exit Sub

'Using Bubble sort as sorting algorithm

'Looping through all worksheets

For i = 1 To SCount - 1

'Making comparison of selected sheet name with other sheets for moving selected sheet to appropriate position

For j = i + 1 To SCount

If Worksheets(j).Name < Worksheets(i).Name Then

Worksheets(j).Move Before:=Worksheets(i)

End If

Next j

Next i

End Sub

Sub DecendingSortOfWorksheets()

'Sort worksheets in a workbook in descending order

Dim SCount, i, j As Integer

'For disabling screen updates

Application.ScreenUpdating = False

'Getting total no. of worsheets in workbook

SCount = Worksheets.Count

'Checking condition whether count of worksheets is greater than 1, If count is one then exit the procedure

If SCount = 1 Then Exit Sub

'Using Bubble sort as sorting algorithm

'Looping through all worksheets

For i = 1 To SCount - 1

'Making comparison of selected sheet name with other sheets for moving selected sheet to appropriate position

For j = i + 1 To SCount

If Worksheets(j).Name > Worksheets(i).Name Then

Worksheets(j).Move Before:=Worksheets(i)

End If

Next j

Next i

End Sub

Если вам понравился этот блог, поделитесь им с друзьями на Facebook и Facebook.

Мы будем рады услышать от вас, дайте нам знать, как мы можем улучшить нашу работу и сделать ее лучше для вас. Напишите нам на [email protected]