Wenn Sie an einem Projekt arbeiten, das viele Arbeitsblätter in einer Arbeitsmappe verwendet, möchten Sie diese möglicherweise nach Arbeitsblattnamen sortieren. Das folgende kurze Makro macht den Trick sehr gut:

Sub SortSheets()

Dim I As Integer, 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 funktioniert, 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 SortSheets()

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, Upper As Integer     Dim I As Integer, J As Integer, 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 Mein Arbeitsblatt genauso angezeigt wie Mein Arbeitsblatt. 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.

_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 (1959) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: