Pat fragt sich, ob es eine schnelle Möglichkeit gibt, die Arbeitsblätter in ihrer Arbeitsmappe zu alphabetisieren. Es gibt keine integrierte Methode, um dies zu tun, aber es ist möglich, ein Makro zu verwenden, um die Sortierung für Sie durchzuführen. In diesem Tipp werde ich zwei Ansätze vorstellen. Die erste bietet eine einfache Möglichkeit zum Sortieren.

Sub SortSheets1()

Dim I As Integer     Dim J As Integer

For I = 1 To Sheets.Count - 1         For J = I + 1 To Sheets.Count             If UCase(Sheets(I).Name) > UCase(Sheets(J).Name) Then                 Sheets(J).Move Before:=Sheets(I)

End If         Next J     Next I End Sub

Dieses Makro sortiert die Arbeitsblattregisterkarten nach Namen in aufsteigender Reihenfolge. Wenn Sie sie in absteigender Reihenfolge sortieren möchten, müssen Sie nur das> in der Mittellinie in <ändern.

Das Makro funktioniert hervorragend, wenn Ihre Arbeitsmappe eine relativ geringe Anzahl von Arbeitsblättern enthält. Wenn Sie beim Ausführen des Makros feststellen, dass die Ausführung viel Zeit in Anspruch nimmt, möchten Sie möglicherweise einen effizienteren Sortieralgorithmus im Makro verwenden. Die folgende Version liest beispielsweise die Namen aller Arbeitsblätter in ein Array, sortiert das Array mithilfe des BubbleSort-Algorithmus und führt dann die eigentliche Anordnung durch:

Sub SortSheets2()

Dim I As Integer     Dim sMySheets() As String     Dim iNumSheets As Integer

iNumSheets = Sheets.Count     Redim sMySheets(1 To iNumSheets)



For I = 1 To iNumSheets         sMySheets(I) = Sheets(I).Name     Next I

BubbleSort sMySheets

For I = 1 To iNumSheets         Sheets(sMySheets(I)).Move Before:=Sheets(I)

Next I End Sub
Sub BubbleSort(sToSort() As String)

Dim Lower As Integer     Dim Upper As Integer     Dim I As Integer     Dim J As Integer     Dim K As Integer     Dim Temp As String

Lower = LBound(sToSort)

Upper = UBound(sToSort)

For I = Lower To Upper - 1         K = I         For J = I + 1 To Upper             If sToSort(K) > sToSort(J) Then                 K = J             End If         Next J         If I <> K Then             Temp = sToSort(I)

sToSort(I) = sToSort(K)

sToSort(K) = Temp         End If     Next I End Sub

Jeder, der seit einiger Zeit programmiert hat, weiß, dass BubbleSort eine gute allgemeine Sortierroutine ist, aber es gibt schnellere.

Wenn Sie beispielsweise einige Arbeitsblätter haben und diese sehr unorganisiert beginnen, ist der QuickSort-Algorithmus möglicherweise vorteilhafter. Alles, was Sie tun müssen, um das oben Gesagte zu ändern, um QuickSort zu verwenden, ist, den QuickSort-Algorithmus als Unterprogramm hinzuzufügen (Sie finden den Algorithmus in jedem guten Visual Basic-Programmierbuch) und die Prozedur dann im Hauptmakro von SortSheets aufzurufen. (Dies bedeutet, dass Sie die Zeile ändern, in der BubbleSort jetzt aufgerufen wird.)

Es gibt einen weiteren Unterschied zwischen diesem zweiten und dem ersten Makro. Das erste Makro berücksichtigt nicht den Fall des Textes, der zum Benennen Ihrer Arbeitsblätter verwendet wird. Daher wird MyWorksheet genauso angezeigt wie MYWORKsheet. Das zweite Makro achtet auf die Groß- und Kleinschreibung und sortiert entsprechend. Dies ist natürlich kein besonders großes Problem, da Excel auch bei Arbeitsblattnamen nicht auf Groß- und Kleinschreibung achtet.

Nur eine kurze Anmerkung: Die oben gezeigte BubbleSort-Routine ist universeller Natur. Das heißt, es funktioniert zum Sortieren eines Arrays, nicht nur zum Sortieren der Namen von Arbeitsblattregistern.

_Hinweis: _

Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (13440) gilt für Microsoft Excel 2007, 2010, 2013 und 2016.

Eine Version dieses Tipps für die ältere Menüoberfläche von Excel finden Sie hier: