AW: Frage zu Excel
Hallo,
probier mal dieses Macro:
Das Makro sortiert alle Blätter nach ihrem Namen in aufsteigender Reihenfolge.
VBA-Quelltext
Public Sub BlätterSortieren(Optional DiagrammeTrennen As Boolean = True, Optional Auswahl As Boolean = False)
Dim Liste As Object, Nr As Integer, AlleBlätter As Object
If ActiveWorkbook.ProtectStructure Then
MsgBox "Bearbeitung geschützter Arbeitsmappen nicht möglich", vbOKOnly + vbCritical, "Fehler"
Exit Sub
End If
Application.ScreenUpdating = False
If Auswahl Then Set AlleBlätter = ActiveWindow.SelectedSheets Else Set AlleBlätter = ActiveWorkbook.Sheets
Set Liste = Workbooks.Add(xlWorksheet).ActiveSheet
Liste.[B1].Activate
' Liste mit Blatnamen und Blattypen erstellen
For Nr = 1 To AlleBlätter.Count
Select Case TypeName(AlleBlätter(Nr))
Case "Worksheet": Cells(Nr, 2) = IIf(AlleBlätter(Nr).Type = xlWorksheet, 1, 4)
Case "Chart": Cells(Nr, 2) = IIf(DiagrammeTrennen, 2, 1)
Case "Module": Cells(Nr, 2) = 3
Case "DialogSheet": Cells(Nr, 2) = 5
Case Else: Cells(Nr, 2) = 6
End Select
Cells(Nr, 1) = AlleBlätter(Nr).Name
Cells(Nr, 3).Value = AlleBlätter(Nr).Visible
AlleBlätter(Nr).Visible = True
Next Nr
' Blattnamen sortieren
Liste.UsedRange.Sort Key1:=Liste.[B1], Key2:=Liste.[A1], Header:=xlNo
' Blattreihenfolge sortieren
For Nr = Liste.UsedRange.Rows.Count - 1 To 1 Step -1
With AlleBlätter(Liste.Cells(Nr, 1).Value)
.Move before:=AlleBlätter(1)
.Visible = Liste.Cells(Nr, 3).Value
End With
Next Nr
Liste.Parent.Close False
End Sub
Argumente der Funktion/Prozedur DiagrammeTrennenOptional. Falls TRUE werden Tabellen alphabetisch sortiert, dahinter kommen die Diagramme in alphabetischer Reihenfolge.Falls FALSE werden Tabellen und Diagramme zusammen sortiert. Ohne Angabe wird TRUE gewählt.
NurAuswahl Optional. Bei TRUE werden nur die ausgewählten Blätter sortiert. Bei FALSE werden alle Blätter sortiert. Ohne Angabe wird FALSE gewählt.