Sorter regnearkene i en projektmappe ved hjælp af VBA i Microsoft Excel

Anonim

I denne artikel har vi givet oplysninger om, hvordan du sorterer regnearkene i projektmappen i stigende eller faldende rækkefølge, afhængigt af regnearksnavnet.

I den vedhæftede projektmappe er der to moduler:-

Modul 1 indeholder makroen "SortWorksheets", der er tildelt knappen "Send" på "Makro" -arket.

Denne makro sorterer alle regnearkene undtagen det første regneark, som er hovedarket med navnet "Makro".

Når brugeren klikker på knappen "Send", sorteres alle arkene efter "Makro" -ark i stigende eller faldende rækkefølge, som brugeren har valgt i kombinationsboksen.

Modul 2 indeholder to makroer “AscendingSortOfWorksheets” og “DecendingSortOfWorksheets”. Når du kører makroen "AscendingSortOfWorksheets", sorterer den alle de regneark, der er til stede i projektmappen i den stigende rækkefølge. Når du kører makroen "DecendingSortOfWorksheets", sorterer den alle de regneark, der findes i projektmappen i den faldende rækkefølge.

Logisk forklaring

Boblesorteringsalgoritme bruges til at sortere regnearkene i projektmappen.

Boblesorteringsalgoritme sammenligner hvert element i arrayet med andre elementer i arrayet og bytter dem afhængigt af, om de skal sortere i stigende eller faldende rækkefølge. I hvert trin bobler den den mindste eller største værdi til toppen af ​​arrayet. Algoritme gentages, indtil alle elementerne er sorteret.

I denne artikel er vores mål at sortere regnearkene i projektmappen efter deres navn. Arbejdsbog, som vi bruger, består af forskellige regneark med navne som Financial Dashboard, Human Resources og Sales Dashboard.

For at nå dette mål har vi brugt Bubble sorteringsalgoritme til at sortere regnearkene.

Kode forklaring

SortWorksheets Makro

Denne makro kører, når brugeren klikker på knappen Send. Denne makro sorterer alle regnearkene i projektmappen efter deres navne undtagen det første regneark i projektmappen. Afhængigt af den værdi, som brugeren har valgt i kombinationsboksen, sorterer den regnearkene i stigende eller faldende rækkefølge.

Følg nedenstående trin for at tilføje kombinationsboks:-

  1. Gå til fanen Udvikler> Klik på Indsæt> Klik på kombinationsboksikonet under formularkontrol

  1. Højreklik på kombinationsboksen, og klik på formatkontrol.

  1. Gå til fanen Kontrol, Tildel elementet, og forbind kombinationsboksen med celle XFC1.

ComboBoxValue = Range ("XFC1"). Værdi

Kombinationsboks på "Makro" -arket er knyttet til celle XFC1. Så for at få værdi fra celle XFC1 bruges ComboBoxValue -variablen.

For i = 2 Til SCount - 1

FOR loop begynder med variabel i, værdi starter fra 2, da vi ønsker at udelukke første regneark i projektmappen fra sortering.

Hvis ComboBoxValue = 1 Så

IF -tilstand bruges til at kontrollere, om der skal sorteres i stigende eller faldende rækkefølge. Hvis ComboBoxValue -værdien er 1, skal du sortere i stigende rækkefølge, ellers faldende rækkefølge.

Arbejdsark sorteret i stigende rækkefølge

Arbejdsark sorteret i faldende rækkefølge

AscendingSortOfWorksheets og DecendingSortOfWorksheets

AscendingSortOfWorksheets og DecendingSortOfWorksheets makroer kan køres ved at trykke på Alt + F8 genvejstast eller Gå til fanen Udvikler> Klik på Makro> vælg makroen og klik på Kør. De sorterer alle de regneark, der findes i projektmappen. Disse makroer kan også køres på andre projektmapper.

Regneark sorteret efter at have kørt AscendingSortOfWorksheets -makro

Regneark sorteret i stigende rækkefølge DecendingSortOfWorksheets -makro

Følg venligst nedenstående for koden

 Sub AscendingSortOfWorksheets () 'Sorter regneark i en projektmappe i stigende rækkefølge Dim SCount, i, j As Integer' Til deaktivering af skærmopdateringer Application.ScreenUpdating = False 'Får samlet nr. af arbejdsark i projektmappe SCount = Worksheets.Count 'Kontrol af tilstanden, om antallet af regneark er større end 1, Hvis antallet er en, afslut derefter proceduren Hvis SCount = 1 Afslut derefter Sub' Brug af boblesort som sorteringsalgoritme 'Looping through all regneark For i = 1 til SCount - 1 'Sammenligning af valgt arknavn med andre ark til flytning af valgt ark til passende position For j = i + 1 Til SCount Hvis regneark (j) .navn  Regneark (i) .Name Herefter Arbejdsark (j). Flyt før: = Regneark (i) Slut Hvis Næste j Næste i Afslut Sub 

Hvis du kunne lide denne blog, kan du dele den med dine venner på Facebook. Du kan også følge os på Twitter og Facebook.

Vi vil meget gerne høre fra dig, lad os vide, hvordan vi kan forbedre vores arbejde og gøre det bedre for dig. Skriv til os på e -mail -stedet