Sorteer de werkbladen in een werkmap met VBA in Microsoft Excel

Anonim

In dit artikel hebben we details gegeven over het sorteren van de werkbladen in de werkmap in oplopende of aflopende volgorde, afhankelijk van de naam van het werkblad.

In de bijgevoegde werkmap zijn er twee modules: -

Module 1 bevat de macro "Werkbladen sorteren" die is toegewezen aan de knop "Verzenden" op het blad "Macro".

Deze macro sorteert alle werkbladen behalve het eerste werkblad, het hoofdblad genaamd "Macro".

Wanneer de gebruiker op de knop "Verzenden" klikt, worden alle bladen na het blad "Macro" gesorteerd in oplopende of aflopende volgorde zoals gekozen door de gebruiker in de keuzelijst met invoervak.

Module2 bevat twee macro's "AscendingSortOfWorksheets" en "DecendingSortOfWorksheets". Bij het uitvoeren van de macro "AscendingSortOfWorksheets", worden alle werkbladen in de werkmap in oplopende volgorde gesorteerd. Bij het uitvoeren van de macro "DecendingSortOfWorksheets", worden alle werkbladen in de werkmap in aflopende volgorde gesorteerd.

Logische uitleg

Het algoritme voor het sorteren van bellen wordt gebruikt voor het sorteren van de werkbladen in de werkmap.

Het bubbelsorteeralgoritme vergelijkt elk item in de array met andere items in de array en verwisselt ze afhankelijk van of ze in oplopende of aflopende volgorde moeten worden gesorteerd. Bij elke stap zal de kleinste of grootste waarde naar de bovenkant van de array bubbelen. Algoritme wordt herhaald totdat alle items zijn gesorteerd.

In dit artikel is ons doel de werkbladen in de werkmap op naam te sorteren. Werkmap die we gebruiken, bestaat uit verschillende werkbladen met namen als Financieel Dashboard, Human Resources en Verkoopdashboard.

Om dit doel te bereiken, hebben we het Bubble-sorteeralgoritme gebruikt voor het sorteren van de werkbladen.

Code uitleg

SorteerWerkbladen Macro

Deze macro wordt uitgevoerd wanneer de gebruiker op de verzendknop klikt. Deze macro sorteert alle werkbladen in de werkmap op naam, behalve het eerste werkblad in de werkmap. Afhankelijk van de waarde die door de gebruiker in de keuzelijst met invoervak ​​is geselecteerd, worden de werkbladen in oplopende of aflopende volgorde gesorteerd.

Volg onderstaande stappen voor het toevoegen van combobox: -

  1. Ga naar het tabblad Ontwikkelaar > Klik op Invoegen > Klik op het combobox-pictogram onder formulierbesturing

  1. Klik met de rechtermuisknop op de combobox en klik op formaatbesturing.

  1. Ga naar het tabblad Control, Wijs het item toe en koppel de combobox aan cel XFC1.

ComboBoxValue = Bereik ("XFC1"). Waarde

De keuzelijst met invoervak ​​op het werkblad "Macro" is gekoppeld aan cel XFC1. Dus om waarde uit cel XFC1 te halen, wordt de ComboBoxValue-variabele gebruikt.

Voor i = 2 tot SCtelling - 1

FOR-lus begint met variabele i, waarde beginnend bij 2, omdat we het eerste werkblad van de werkmap willen uitsluiten van sorteren.

Als ComboBoxValue = 1 Dan

ALS-voorwaarde wordt gebruikt om te controleren of in oplopende of aflopende volgorde moet worden gesorteerd. ALS de ComboBoxValue-waarde 1 is, sorteer dan in oplopende volgorde, anders aflopende volgorde.

Werkbladen in oplopende volgorde gesorteerd

Werkbladen in aflopende volgorde gesorteerd

AscendingSortOfWorksheets en DecendingSortOfWorksheets

AscendingSortOfWorksheets en DecendingSortOfWorksheets macro's kunnen worden uitgevoerd door op Alt + F8 sneltoets te drukken of Ga naar het tabblad Ontwikkelaar > Klik op Macro > selecteer de macro en klik op Uitvoeren. Ze sorteren alle werkbladen in de werkmap. Deze macro's kunnen ook op andere werkmappen worden uitgevoerd.

Werkbladen gesorteerd na het uitvoeren van de macro AscendingSortOfWorksheets

Werkbladen gesorteerd in oplopende volgorde DecendingSortOfWorksheets macro

Volg hieronder voor de code:

 Sub AscendingSortOfWorksheets() 'Sorteer werkbladen in een werkmap in oplopende volgorde Dim SCCount, i, j As Integer 'Voor het uitschakelen van schermupdates Application.ScreenUpdating = False 'Totaalnr. van worsheets in werkmap SCount = Worksheets.Count 'Voorwaarde controleren of het aantal werkbladen groter is dan 1, Als het aantal één is, sluit dan de procedure af If SCount = 1 Dan Exit Sub 'Bubbelsortering gebruiken als sorteeralgoritme' Alle werkbladen doorlopen Voor i = 1 To SCount - 1 'Vergelijking van de geselecteerde bladnaam maken met andere bladen om het geselecteerde blad naar de juiste positie te verplaatsen Voor 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 

Als je deze blog leuk vond, deel hem dan met je vrienden op Facebook. Ook kunt u ons volgen op Twitter en Facebook.

We horen graag van u, laat ons weten hoe we ons werk kunnen verbeteren en voor u kunnen verbeteren. Schrijf ons op de e-mailsite