Werkbladen in Excel sorteren met VBA (alfabetisch)

Als u met veel werkbladen in Excel werkt, weet u dat het beheer ervan een probleem kan worden.

Zodra u meer dan een paar werkbladen heeft, moet u deze handmatig ordenen.

Hoe gemakkelijk zou het zijn als er een manier was geweest om de werkbladen snel in Excel te sorteren.

Hoewel er geen ingebouwde functie is om dit te doen, kan dit (gemakkelijk) worden gedaan met VBA.

In deze zelfstudie geef ik je de code en de exacte stappen die je moet volgen om werkbladen in Excel te sorteren.

U kunt de code aanpassen om de werkbladen in oplopende of aflopende volgorde te sorteren.

VBA-code om werkbladen in Excel te sorteren

Hieronder vindt u de code die de werkbladen in alfabetische volgorde sorteert zodra u deze uitvoert.

Sub SortWorksheetsTabs() Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer ShCount = Sheets.Count For i = 1 To ShCount - 1 For j = i + 1 To ShCount If UCase(Sheets(j). Name) < UCase(Sheets(i).Name) Then Sheets(j).Move before:=Sheets(i) End If Next j Next i Application.ScreenUpdating = True End Sub

Het bovenstaande is een eenvoudige code die For Next-lussen gebruikt om elk werkblad te analyseren tegen alle werkbladen.

Het vergelijkt de naam van een werkblad met alle werkbladen en verplaatst het op basis van de naam in alfabetische volgorde.

Vervolgens gaat het naar het volgende werkblad en vergelijkt het vervolgens met alle werkbladen.

Dit proces wordt herhaald voor alle werkbladen en het uiteindelijke resultaat is een volgorde van werkbladen in alfabetische volgorde.

Een paar belangrijke dingen om te weten over deze code:

  1. De UCase-functie wordt gebruikt om ervoor te zorgen dat kleine letters en hoofdletters niet verschillend worden behandeld.
  2. De waarde van Application.ScreenUpdating wordt aan het begin van de code ingesteld op False en aan het einde van de code gewijzigd in True. Dit zorgt ervoor dat terwijl de code wordt uitgevoerd, u deze niet op het scherm ziet gebeuren. Dit helpt ook de uitvoering van de code te versnellen.

Als u werkbladen in aflopende volgorde wilt sorteren, hoeft u alleen het teken (groter dan) te wijzigen.

De onderstaande code zou de werkbladen in aflopende volgorde sorteren:

'Deze code sorteert de werkbladen alfabetisch Sub SortWorksheetsTabs() Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer ShCount = Sheets.Count For i = 1 To ShCount - 1 For j = i + 1 To ShCount If UCase(Sheets(j).Name) > UCase(Sheets(i).Name) Then Sheets(j).Move before:=Sheets(i) End If Next j Next i Application.ScreenUpdating = True End Sub

U kunt de gebruiker ook de mogelijkheid geven om te kiezen of hij/zij in oplopende/aflopende volgorde wil sorteren.

De onderstaande code toont een berichtvenster en de gebruiker kan de volgorde selecteren om te sorteren.

Sub SortWorksheetsTabs() Application.ScreenUpdating = False Dim ShCount As Integer, i As Integer, j As Integer Dim SortOrder As VbMsgBoxResult SortOrder = MsgBox ("Selecteer Ja voor oplopende volgorde en Nee voor aflopende volgorde", vbYesNoCancel) ShCount For = Sheets.Count i = 1 Naar ShCount - 1 For j = i + 1 Naar ShCount If SortOrder = vbYes Then If UCase(Sheets(j).Name) UCase(Sheets(i).Name) Then Sheets(j).Verplaats voor:=Sheets (i) End If End If Next j Next i Application.ScreenUpdating = True End Sub

Wanneer de bovenstaande code wordt uitgevoerd, wordt een bericht weergegeven zoals hieronder wordt weergegeven. Het sorteert op basis van de selectie (Ja voor Oplopend en Nee voor Aflopend).

Als u op Annuleren klikt, stopt de code en gebeurt er niets.

Opmerking: De sortering kan niet ongedaan worden gemaakt. Als je de originele volgorde ook wilt behouden, maak dan een kopie van het werkboek.

Een woord van waarschuwing: De bovenstaande code werkt in de meeste gevallen. Een gebied waar het u het verkeerde resultaat geeft, is wanneer u tabbladnamen hebt zoals Q12021-2022, Q22021-2022, Q12021-2022, Q22021-2022. In het ideale geval zou je willen dat alle tabbladen voor dezelfde jaren bij elkaar staan, maar dat zal niet gebeuren omdat Q12021-2022 vóór Q22021-2022 zal worden geplaatst.

Waar de VBA-code te plaatsen

Excel heeft een VBA-backend, de VBA-editor.

U moet de VBA-code kopiëren en plakken in het codevenster van de VB Editor-module.

Hier zijn de stappen om dit te doen:

  1. Klik op het tabblad 'Ontwikkelaar'. (Kan het ontwikkelaarstabblad niet zien? Klik hier om te leren hoe u het kunt krijgen).
  2. Klik op de Visual Basic-optie. Dit opent de VB-editor in de backend.
  3. Klik in het deelvenster Projectverkenner in de VB-editor met de rechtermuisknop op een object voor de werkmap waarin u de code wilt invoegen. (Als u de Projectverkenner niet ziet, gaat u naar het tabblad 'Bekijken' en klikt u op 'Projectverkenner'.)
  4. Ga naar Invoegen en klik op Module. Hiermee wordt een moduleobject voor uw werkmap ingevoegd.
  5. Kopieer en plak de code in het modulevenster.

Hoe de VBA-code uit te voeren

In Excel zijn er verschillende manieren om de VBA-code uit te voeren.

U kunt de code rechtstreeks uitvoeren vanuit de Visual Basic Editor (ook wel de VB Editor genoemd).

U kunt een knop of een vorm in het werkblad invoegen en de macro eraan toewijzen. Wanneer u op de knop klikt, wordt de macro onmiddellijk uitgevoerd.

U kunt de macro ook toevoegen aan de werkbalk Snelle toegang (QAT). Wanneer u nu de werkbladtabs moet sorteren, kunt u gewoon op het macrocodepictogram in de QAT klikken.

U kunt hier alles lezen over het uitvoeren van de macro - Een macro uitvoeren in Excel (of bekijk de video hieronder).
Misschien vind je de volgende Excel/VBA-zelfstudies misschien ook leuk:

  • Gegevens sorteren in Excel met VBA.
  • Sorteer automatisch gegevens in alfabetische volgorde met behulp van formule.
  • Hoe u gegevens op meerdere niveaus kunt sorteren in Excel.
  • Een inleiding tot de sorteeropties voor Excel-gegevens.
  • Excel VBA Autofilter: een complete gids met voorbeelden
  • Werkbladen groeperen in Excel
  • Gegevens spiegelen in Excel

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave