Sortuj arkusze w skoroszycie za pomocą VBA w programie Microsoft Excel

Anonim

W tym artykule przedstawiliśmy szczegółowe informacje na temat sortowania arkuszy w skoroszycie w kolejności rosnącej lub malejącej, w zależności od nazwy arkusza roboczego.

W załączonym skoroszycie znajdują się dwa moduły:-

Moduł 1 zawiera makro „Sortuj arkusze”, które jest przypisane do przycisku „Prześlij” na arkuszu „Makro”.

To makro sortuje wszystkie arkusze robocze z wyjątkiem pierwszego arkusza roboczego, który jest arkuszem głównym o nazwie „Makro”.

Gdy użytkownik kliknie przycisk „Prześlij”, wszystkie arkusze po arkuszu „Makro” zostaną posortowane w kolejności rosnącej lub malejącej, wybranej przez użytkownika w polu kombi.

Moduł2 zawiera dwa makra „AscendingSortOfWorksheets” i „DecendingSortOfWorksheets”. Po uruchomieniu makra „AscendingSortOfWorksheets” posortuje wszystkie arkusze znajdujące się w skoroszycie w kolejności rosnącej. Po uruchomieniu makra „DecendingSortOfWorksheets” posortuje wszystkie arkusze znajdujące się w skoroszycie w kolejności malejącej.

Wyjaśnienie logiczne

Algorytm sortowania bąbelkowego służy do sortowania arkuszy w skoroszycie.

Algorytm sortowania bąbelkowego porównuje każdy element w tablicy z innym elementem w tablicy i zamienia je w zależności od tego, czy sortować w porządku rosnącym, czy malejącym. W każdym kroku będzie bąbelkować najmniejszą lub największą wartość na górę tablicy. Algorytm powtarza się, aż wszystkie elementy zostaną posortowane.

W tym artykule naszym celem jest posortowanie arkuszy w skoroszycie według ich nazwy. Skoroszyt, którego używamy, składa się z różnych arkuszy roboczych o nazwach takich jak Financial Dashboard, Human Resources i Sales Dashboard.

Aby osiągnąć ten cel, do sortowania arkuszy użyliśmy algorytmu sortowania bąbelkowego.

Wyjaśnienie kodu

SortWorksheets Macro

To makro zostanie uruchomione, gdy użytkownik kliknie przycisk przesyłania. To makro posortuje wszystkie arkusze w skoroszycie według ich nazw z wyjątkiem pierwszego arkusza w skoroszycie. W zależności od wartości wybranej przez użytkownika w polu kombi, posortuje arkusze w kolejności rosnącej lub malejącej.

Aby dodać pole kombi, wykonaj poniższe kroki: –

  1. Przejdź do zakładki Deweloper > kliknij wstawkę > kliknij ikonę pola kombi pod kontrolą formularza

  1. Kliknij prawym przyciskiem myszy pole kombi i kliknij kontrolkę formatu.

  1. Przejdź do zakładki kontroli, Przypisz element i połącz pole kombi z komórką XFC1.

ComboBoxValue = Zakres("XFC1").Wartość

Pole kombi w arkuszu „Makro” jest połączone z komórką XFC1. Tak więc do pobrania wartości z komórki XFC1 używana jest zmienna ComboBoxValue.

Dla i = 2 To SCount - 1

Pętla FOR zaczyna się od zmiennej i, której wartość zaczyna się od 2, ponieważ chcemy wykluczyć pierwszy arkusz skoroszytu z sortowania.

Jeśli ComboBoxValue = 1 Wtedy

Warunek IF służy do sprawdzenia, czy sortować w porządku rosnącym czy malejącym. Jeśli wartość ComboBoxValue wynosi 1, posortuj w porządku rosnącym, w przeciwnym razie w porządku malejącym.

Arkusze posortowane w porządku rosnącym

Arkusze posortowane w kolejności malejącej

AscendingSortOfWorksheets i DecendingSortOfWorksheets

Makra AscendingSortOfWorksheets i DecendingSortOfWorksheets można uruchomić, naciskając klawisz skrótu Alt + F8 lub Przejdź do karty Deweloper> Kliknij Makro> wybierz makro i kliknij Uruchom. Posortują wszystkie arkusze znajdujące się w skoroszycie. Te makra można również uruchamiać w innych skoroszytach.

Arkusze posortowane po uruchomieniu makra AscendingSortOfWorksheets

Arkusze posortowane w porządku rosnącym Makro DecendingSortOfWorksheets

Proszę postępować zgodnie z poniższym kodem!

 Sub AscendingSortOfWorksheets() 'Sortuj arkusze w skoroszycie w porządku rosnącym Dim SCount, i, j As Integer 'W celu wyłączenia aktualizacji ekranu Application.ScreenUpdating = False 'Pobieranie całkowitej liczby of workbooks in workbook SCount = Worksheets.Count 'Sprawdzanie warunku, czy liczba arkuszy jest większa niż 1, Jeśli liczba wynosi jeden to zakończ procedurę If SCount = 1 Then Exit Sub 'Używanie sortowania bąbelkowego jako algorytmu sortowania 'Przechodzenie przez wszystkie arkusze dla i = 1 To SCount - 1 'Dokonywanie porównania nazwy wybranego arkusza z innymi arkuszami w celu przesunięcia wybranego arkusza do odpowiedniej pozycji For j = i + 1 To SCount If Worksheets(j).Name  Arkusze(i).Nazwa Następnie Arkusze(j).Przenieś do:=Arkusze(i) Zakończ Jeśli Dalej j Dalej i Zakończ Sub 

Jeśli podobał Ci się ten blog, podziel się nim ze znajomymi na Facebooku. Możesz również śledzić nas na Twitterze i Facebooku.

Chcielibyśmy usłyszeć od Ciebie, daj nam znać, jak możemy poprawić naszą pracę i uczynić ją lepszą dla Ciebie. Napisz do nas na stronie e-mail