Sortieren Sie die Arbeitsblätter in einer Arbeitsmappe mit VBA in Microsoft Excel

Anonim

In diesem Artikel haben wir Details zum Sortieren der Arbeitsblätter in der Arbeitsmappe in aufsteigender oder absteigender Reihenfolge je nach Arbeitsblattnamen bereitgestellt.

In der beigefügten Arbeitsmappe gibt es zwei Module:-

Modul 1 enthält das Makro „SortWorksheets“, das der Schaltfläche „Submit“ auf dem „Macro“-Blatt zugewiesen ist.

Dieses Makro sortiert alle Arbeitsblätter mit Ausnahme des ersten Arbeitsblatts, das das Hauptblatt mit dem Namen "Makro" ist.

Wenn der Benutzer auf die Schaltfläche „Senden“ klickt, werden alle Blätter nach dem Blatt „Makro“ in aufsteigender oder absteigender Reihenfolge sortiert, wie vom Benutzer im Kombinationsfeld ausgewählt.

Modul2 enthält zwei Makros „AscendingSortOfWorksheets“ und „DecendingSortOfWorksheets“. Beim Ausführen des Makros "AscendingSortOfWorksheets" werden alle in der Arbeitsmappe vorhandenen Arbeitsblätter in aufsteigender Reihenfolge sortiert. Beim Ausführen des Makros "DecendingSortOfWorksheets" werden alle in der Arbeitsmappe vorhandenen Arbeitsblätter in absteigender Reihenfolge sortiert.

Logikerklärung

Der Bubble-Sort-Algorithmus wird zum Sortieren der Arbeitsblätter in der Arbeitsmappe verwendet.

Der Bubble-Sort-Algorithmus vergleicht jedes Element im Array mit anderen Elementen im Array und vertauscht sie, je nachdem, ob in aufsteigender oder absteigender Reihenfolge sortiert werden soll. In jedem Schritt wird der kleinste oder größte Wert an den Anfang des Arrays geblasen. Der Algorithmus wird wiederholt, bis alle Elemente sortiert sind.

In diesem Artikel besteht unser Ziel darin, die Arbeitsblätter in der Arbeitsmappe nach ihrem Namen zu sortieren. Die von uns verwendete Arbeitsmappe besteht aus verschiedenen Arbeitsblättern mit Namen wie Financial Dashboard, Human Resources und Sales Dashboard.

Um dieses Ziel zu erreichen, haben wir den Bubble-Sort-Algorithmus zum Sortieren der Arbeitsblätter verwendet.

Codeerklärung

SortWorksheets-Makro

Dieses Makro wird ausgeführt, wenn der Benutzer auf die Schaltfläche zum Senden klickt. Dieses Makro sortiert alle Arbeitsblätter in der Arbeitsmappe nach ihren Namen mit Ausnahme des ersten Arbeitsblatts in der Arbeitsmappe. Abhängig von dem vom Benutzer im Kombinationsfeld ausgewählten Wert werden die Arbeitsblätter in aufsteigender oder absteigender Reihenfolge sortiert.

Um ein Kombinationsfeld hinzuzufügen, führen Sie die folgenden Schritte aus:

  1. Gehen Sie zur Registerkarte Entwickler> Klicken Sie auf Einfügen> Klicken Sie auf das Kombinationsfeldsymbol unter der Formularsteuerung

  1. Klicken Sie mit der rechten Maustaste auf das Kombinationsfeld und klicken Sie auf Formatsteuerung.

  1. Gehen Sie zur Registerkarte "Steuerung", weisen Sie das Element zu und verknüpfen Sie das Kombinationsfeld mit der Zelle XFC1.

ComboBoxValue = Range("XFC1").Value

Das Kombinationsfeld auf dem Arbeitsblatt "Makro" ist mit der Zelle XFC1 verknüpft. Um den Wert aus der Zelle XFC1 zu erhalten, wird die Variable ComboBoxValue verwendet.

Für i = 2 zu SCount - 1

Die FOR-Schleife beginnt mit der Variablen i, der Wert beginnt bei 2, da wir das erste Arbeitsblatt der Arbeitsmappe von der Sortierung ausschließen möchten.

Wenn ComboBoxValue = 1 Dann

Die IF-Bedingung wird verwendet, um zu prüfen, ob in aufsteigender oder absteigender Reihenfolge sortiert werden soll. IF ComboBoxValue Wert 1 ist, dann in aufsteigender Reihenfolge sortieren, ansonsten in absteigender Reihenfolge.

Arbeitsblätter aufsteigend sortiert

Arbeitsblätter absteigend sortiert

AscendingSortOfWorksheets und DecendingSortOfWorksheets

AscendingSortOfWorksheets- und DecendingSortOfWorksheets-Makros können ausgeführt werden, indem Sie die Tastenkombination Alt + F8 drücken oder zur Registerkarte Entwickler gehen> Klicken Sie auf Makro> wählen Sie das Makro aus und klicken Sie auf Ausführen. Sie sortieren alle Arbeitsblätter, die in der Arbeitsmappe vorhanden sind. Diese Makros können auch auf anderen Arbeitsmappen ausgeführt werden.

Arbeitsblätter sortiert nach dem Ausführen des AscendingSortOfWorksheets-Makros

Aufsteigend sortierte Arbeitsblätter Makro DecendingSortOfWorksheets

Bitte folgen Sie unten für den Code

 Sub AscendingSortOfWorksheets() 'Arbeitsblätter in einer Arbeitsmappe in aufsteigender Reihenfolge sortieren Dim SCount, i, j As Integer 'Zum Deaktivieren von Bildschirmaktualisierungen Application.ScreenUpdating = False 'Gesamt-Nr. der Arbeitsblätter in der Arbeitsmappe SCount = Worksheets.Count 'Überprüfe die Bedingung, ob die Anzahl der Arbeitsblätter größer als 1 ist. Wenn die Anzahl eins ist, dann beenden Sie die Prozedur Wenn SCount = 1 Then Exit Sub 'Verwenden von Bubblesort als Sortieralgorithmus 'Durchlaufen aller Arbeitsblätter For i = 1 To SCount - 1 'Durchführen eines Vergleichs des ausgewählten Blattnamens mit anderen Blättern zum Verschieben des ausgewählten Blatts an die geeignete 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 

Wenn Ihnen dieser Blog gefallen hat, teilen Sie ihn mit Ihren Freunden auf Facebook. Außerdem können Sie uns auf Twitter und Facebook folgen.

Wir würden uns freuen, von Ihnen zu hören, lassen Sie uns wissen, wie wir unsere Arbeit verbessern und für Sie verbessern können. Schreiben Sie uns auf der E-Mail-Site