Сортировка листов в книге с помощью VBA в Microsoft Excel
В этой статье мы предоставили подробную информацию о том, как сортировать рабочие листы в книге в возрастающем или убывающем порядке, в зависимости от имени рабочего листа.
В прилагаемой книге есть два модуля: — Module1 содержит макрос «SortWorksheets», который назначен кнопке «Отправить» на листе «Макрос».
Этот макрос сортирует все рабочие листы, кроме первого рабочего листа, который является основным листом с именем «Макрос».
Когда пользователь нажимает кнопку «Отправить», все листы после листа «Макрос» будут отсортированы в порядке возрастания или убывания, выбранном пользователем в поле со списком.
Module2 содержит два макроса «AscendingSortOfWorksheets» и «DecendingSortOfWorksheets». При запуске макроса «AscendingSortOfWorksheets» он отсортирует все рабочие листы, имеющиеся в книге, в порядке возрастания. При запуске макроса «DecendingSortOfWorksheets» он отсортирует все рабочие листы, присутствующие в книге, в порядке убывания.
Логическое объяснение
Алгоритм пузырьковой сортировки используется для сортировки листов в книге.
Алгоритм пузырьковой сортировки сравнивает каждый элемент в массиве с другим элементом в массиве и меняет их местами в зависимости от того, следует ли выполнять сортировку в порядке возрастания или убывания. На каждом этапе он будет перемещать наименьшее или наибольшее значение в верхнюю часть массива. Алгоритм повторяется до тех пор, пока все элементы не будут отсортированы.
В этой статье наша цель — отсортировать листы в книге по их именам. Рабочая тетрадь, которую мы используем, состоит из различных листов с такими названиями, как Финансовая панель, Управление персоналом и Панель продаж.
Для достижения этой цели мы использовали алгоритм пузырьковой сортировки для сортировки листов.
Объяснение кода
Макрос SortWorksheets
Этот макрос запускается, когда пользователь нажимает кнопку отправки. Этот макрос сортирует все листы в книге по их именам, кроме первого листа в книге. В зависимости от значения, выбранного пользователем в поле со списком, он будет отсортировать листы в порядке возрастания или убывания.
Чтобы добавить поле со списком, выполните следующие действия: -. Перейдите на вкладку «Разработчик»> нажмите «Вставить»> нажмите значок поля со списком под элементом управления формой
-
Щелкните правой кнопкой мыши поле со списком и выберите элемент управления форматом.
-
Перейдите на вкладку управления, назначьте элемент и свяжите поле со списком с ячейкой XFC1.
ComboBoxValue = Range («XFC1»). Значение Поле со списком на рабочем листе «Макрос» связано с ячейкой XFC1. Итак, для получения значения из ячейки XFC1 используется переменная ComboBoxValue.
For i = 2 To SCount — 1 цикл FOR начинается с переменной i, значение начинается с 2, так как мы хотим исключить первый рабочий лист книги из сортировки.
Если ComboBoxValue = 1, то условие IF используется для проверки того, следует ли выполнять сортировку по возрастанию или по убыванию. Если значение ComboBoxValue равно 1, выполните сортировку по возрастанию, иначе по убыванию.
Рабочие листы отсортированы по возрастанию
Рабочие листы отсортированы по убыванию
AscendingSortOfWorksheets и DecendingSortOfWorksheets
Макросы AscendingSortOfWorksheets и DecendingSortOfWorksheets можно запустить, нажав сочетание клавиш Alt + F8 или перейдите на вкладку «Разработчик»> нажмите «Макрос»> выберите макрос и нажмите «Выполнить». Они отсортируют все рабочие листы в книге. Эти макросы можно запускать и в других книгах.
Рабочие листы, отсортированные после запуска макроса AscendingSortOfWorksheets
Рабочие листы, отсортированные по возрастанию Макрос DecendingSortOfWorksheets
Пожалуйста, введите код ниже
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]