Alphabetisieren von Arbeitsblatt-Registerkarten (Microsoft Excel)
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: