Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Reihenfolge von Tabellenblättern fixieren

Forumthread: Reihenfolge von Tabellenblättern fixieren

Reihenfolge von Tabellenblättern fixieren
13.10.2025 12:37:47
andikoler
Hallo,
ich bin auf der Suche nach einer Lösung für folgendes Problem:

Es gibt eine Reihe von Tabellenblättern wobei immer wieder auch neue hinzukommen. Nun möchte ich in einem Tabelleblatt eine Liste aller Blattnamen ausgeben, was soweit auch funktioniert. Allerdings entspricht die Reihenfolge in welcher die Blattnamen ausgegeben werden immer der Reihenfolge in der sie in Excel angezeigt werden. Wenn ich ein Blatt also verschiebe, ändert sich auch die Reihenfolge in der Liste.

Wie kann ich es erreichen, dass die Reihenfolge in der Liste konstant bleibt und neue Tabellenblätter einfach in der Liste ganz hinten ergänzt werden?

Gibt es sowas wie einen Index der Tabellenblätter, unabhängig von deren Namen?

Vielen Dank für eure Hilfe
andreas
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Reihenfolge von Tabellenblättern fixieren
13.10.2025 12:53:26
daniel
Hi
wie erzeugst du denn die Liste der Tabellenblätter?
wenn du die Per Makro erzeugst, dann könntest du es so machen, dass neue immer nur am Ende hinzugefügt werden.

der Zellbereich, in dem die Liste der Tabellenblätter erzeugt wird, sei Tabelle1!A:A

dim sh as worksheet

for each sh in thisworkbook.Worksheets
if Worksheetfunction.Countif(Sheets("Tabelle1").range("A:A"), sh.name) = 0 then Sheets("Tabelle1").Cells(Rows.count, "A").end(xlup).Offset(1, 0).Value = sh.name
next


Gruß Daniel
Anzeige
AW: Reihenfolge von Tabellenblättern fixieren
13.10.2025 15:16:41
Uduuh
Hallo,
Option Explicit


Sub BlattNamen()
Dim wks As Worksheet
Dim objList As Object, oObj
Dim rngCell As Range
Set objList = CreateObject("scripting.dictionary")

'vorhandene Liste einlesen
With ActiveSheet
For Each rngCell In .Range(.Cells(4, 17), .Cells(4, Columns.Count).End(xlToLeft))
objList(rngCell.Value) = 0
Next rngCell
End With

'neue Blätter hinzufügen
For Each wks In Worksheets
If Not wks Is ActiveSheet Then
If Not objList.exists(wks.Name) Then
If LCase(wks.Cells(1, 1)) Like "*projektname*" Then
objList(wks.Name) = 0
End If
End If
End If
Next wks

'nicht mehr vorhandene Blätter aus Liste entfernen
On Error Resume Next
For Each oObj In objList
If Worksheets(oObj) Is Nothing Then
objList.Remove (oObj)
End If
Next oObj
On Error GoTo 0

With ActiveSheet
.Cells(4, 17).Resize(, 100).ClearContents
.Cells(4, 17).Resize(, objList.Count) = objList.keys
End With

End Sub

Gruß aus'm Pott
Udo
Anzeige
AW: Reihenfolge von Tabellenblättern fixieren
13.10.2025 21:03:38
xlKing
Hallo,

Die Reihenfolge von Blättern entspricht immer der im Excel angezeigten. Eine andere Reihenfolge gibt es nicht. Höchstens wenn du die Blätter nicht umbenennst, kannst du hinten die Nummer nach dem Wort "Tabelle" aus dem Codename auslesen und danach sortieren. Aber da ist nicht Sinn der Sache.

Du kannst aber mit der Funktion "Arbeitsmappe schützen" auf dem Register "Überprüfen" verhindern, dass Blätter hinzugefügt, gelöscht oder verschoben werden. Mach dir das zunutze in dem du in deinem Makro diese Funktion nur abschaltest, wenn du wirklich an der Struktur der Anordnung rumschrauben willst.

Gruß Mr. K.
Anzeige
AW: Reihenfolge von Tabellenblättern fixieren
13.10.2025 13:45:00
andikoler
Danke für deine Antwort. Ich erstelle die Blätter manuell und sie werden auch immer wieder anders angeordnet. Lediglich in der Ausgabeliste benötige ich eine fixe Reihenfolge.
Derzeit nutze ich folgende Funktion:



Sub Liste_Projektnamen()

Dim ws As Worksheet
Dim aktivesBlatt As Worksheet
Dim spalte As Long
Dim lastCol As Long
Dim wert As String

' Aktuelles Blatt speichern
Set aktivesBlatt = ActiveSheet

' Startspalte (Q = 17)
spalte = 17

' Letzte Spalte des Blattes bestimmen (vollständig qualifiziert)
lastCol = aktivesBlatt.Columns.Count

' Alte Liste löschen (Zeile 4 ab Spalte P bis zur letzten Spalte)
aktivesBlatt.Range(aktivesBlatt.Cells(4, 17), aktivesBlatt.Cells(4, lastCol)).ClearContents

' Überschrift über der Liste (optional)
' aktivesBlatt.Range("P2").Value = "Tabellenblätter mit 'Projektname' in A1"

' Schleife durch alle Tabellenblätter
For Each ws In ThisWorkbook.Worksheets
' Nur andere Blätter prüfen (optional)
If ws.Name > aktivesBlatt.Name Then

' Wert aus A1 lesen und trimmen
wert = Trim(CStr(ws.Range("A1").Value))

' Prüfen, ob A1 = "Projektname" (Groß-/Kleinschreibung egal)
If StrComp(wert, "Projektname", vbTextCompare) = 0 Then
aktivesBlatt.Cells(4, spalte).Value = ws.Name
spalte = spalte + 1
End If
End If
Next ws
End Sub

Anzeige
AW: Reihenfolge von Tabellenblättern fixieren
13.10.2025 14:45:21
daniel
wie du aus meinem Beispiel sehen kannst.
Lösche die alte Liste nicht, sondern füge neue Elemente nur dann hinzu, wenn sie in der alten Liste noch nicht drin sind.
allerdings muss man dann noch in einer zweiten Schleife prüfen, welche Elemente aus der Liste nicht mehr vorhanden sind und gelöscht werden können.

Gruß Daniel
Anzeige
Anzeige
Anzeige
Live-Forum - Die aktuellen Beiträge
Datum
Titel
14.05.2026 13:31:09
14.05.2026 09:50:42
13.05.2026 19:14:18