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

Forumthread: Nur bestimmte Blattnamen auflisten

Nur bestimmte Blattnamen auflisten
08.02.2022 12:55:33
DarkerWolf
Hallo zusammen! Nachdem ich hier im Forum schon viel Hilfe gefunden hab, hab ich doch noch ein Problem gefunden bei dem kein suchen weiterhilft.
Ich habe in meiner Excel-Mappe ganz viele Blätter die alle gleich aufgebaut sind. Nun möchte ich auf einem weiteren Blatt mit VBA eine Liste mit allen Blattnamen erstellen lassen. Diese Liste soll jedoch nur bestimmte Blätter enthalten, nämlich alle die z.B. in Zelle J4 eine 1 als Wert haben. (Es gibt nur Einsen oder Leer, daher könnte man vlt. auch einfach schauen ob das Feld gefüllt ist oder nicht, wenn es das einfacher machen würde).
Außerdem: Wäre es evtl auch möglich die Voraussetzung zu erweitern, sodass z.B. nur Blätter aufgelistet werden die in J4 UND in I5 eine 1 haben?
Es muss leider VBA sein da die Zelle wegen anderer Berechnungen am Anfang komplett leer sein muss, daher auch keine Formel enthalten darf.
Ich hoffe jemand kann mir weiter helfen, vielen Dank schonmal! :)
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nur bestimmte Blattnamen auflisten
08.02.2022 13:13:19
Daniel
Hi
im Prinzip so

dim wsh as worksheet
dim Zeile as long
Zeile = 1 'Startzeile der Ausgabe
Thisworkbook.Sheets("weiteres Blatt").Columns(1).ClearContents
for each wsh in thisworkbook.Worksheets
if wsh.Range("J4") = 1 then
thisworkbook.Sheets("weiteres Blatt").Cells(Zeile, 1).Value = wsh.Name
Zeile = Zeile + 1
end if
next
die Weiter Bedingung machst du dann mit

IF wsh.Range("J4") = 1 AND wsh.Range("I5") = 1 Then
Gruß Daniel
Anzeige
AW: Nur bestimmte Blattnamen auflisten
08.02.2022 13:28:37
DarkerWolf
Oha, das ging ja schnell. Danke euch beiden, die Lösung von Pierre finde ich für meinen Fall besser geeignet da es wirklich sehr viele Blätter sind.
Einziges Problem: So wie in dem Link beschrieben wird immer ein neues zusätzliches Blatt erstellt, wie müsste man den Code verändern damit er die Liste ins aktuelle Blatt packt?
Momentan sieht es so aus:

Private Sub Worksheet_Activate()
Dim Zeile As Long
Dim Blatt As Worksheet
Dim Neublatt As Worksheet
Set Neublatt = ActiveWorkbook.Worksheets.Add
Zeile = 1
For Each Blatt In ActiveWorkbook.Worksheets
If Blatt.Name  Neublatt.Name And Blatt.Range("J4").Value = 1 And Blatt.Range("I5").Value = 1 Then
Neublatt.Cells(Zeile, 1) = Blatt.Name
Zeile = Zeile + 1
End If
Next Blatt
End Sub

Anzeige
AW: Nur bestimmte Blattnamen auflisten
08.02.2022 13:43:13
Pierre
Einfach deinen Code umgebaut:

Private Sub Worksheet_Activate()
Dim Zeile As Long
Dim Blatt As Worksheet
'Dim Neublatt As Worksheet
'Set Neublatt = ActiveWorkbook.Worksheets.Add
Zeile = 1
For Each Blatt In ActiveWorkbook.Worksheets
If Blatt.Name  ActiveSheet.Name And Blatt.Range("J4").Value = 1 And Blatt.Range("I5").Value = 1 Then
ActiveSheet.Cells(Zeile, 1) = Blatt.Name
'Neublatt.Cells(Zeile, 1) = Blatt.Name
Zeile = Zeile + 1
End If
Next Blatt
End Sub
Die Zeilen mit Hochkomma kannst du löschen.
Gruß Pierre
Anzeige
kanns du mir bitte erklären, was an dem Code
08.02.2022 14:14:19
Daniel
von Pierre jetzt anders ist, als an meinem, so dass er für dich besser geeignet ist?
ich sehe keinen Unterschied, aber so wie du schreibst, muss ja einer da sein.
Bitte zeige ihn mir.
Danke Daniel
AW: kanns du mir bitte erklären, was an dem Code
08.02.2022 19:17:39
DarkerWolf
Also ich bin das jetzt nochmal in ruhe zuhause durchgegangen und ja, du hast recht die sind eigentlich gleich.
Beim schnellen überfliegen vorhin hat mich das "weiteres Blatt" etwas verwirrt, ich hab gedacht ich müsste da alle Blattnamen erst eintragen.
Entschuldige bitte die Verwirrung, heute läufts wohl irgendwie nicht so bei mir :)
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Bestimmte Blattnamen in Excel auflisten


Schritt-für-Schritt-Anleitung

Um in Excel eine Liste aller Tabellenblätter mit bestimmten Bedingungen aufzulisten, benötigst du VBA. Folgendes Vorgehen hilft dir dabei:

  1. Öffne die Excel-Datei, in der du die Blattnamen auflisten möchtest.
  2. Drücke ALT + F11, um den VBA-Editor zu öffnen.
  3. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (deinDateiname)" > Einfügen > Modul.
  4. Kopiere und füge folgenden Code ein:
Private Sub Worksheet_Activate()
    Dim Zeile As Long
    Dim Blatt As Worksheet
    Zeile = 1 ' Startzeile der Ausgabe
    ActiveSheet.Columns(1).ClearContents ' Vorherige Inhalte löschen
    For Each Blatt In ActiveWorkbook.Worksheets
        If Blatt.Range("J4").Value = 1 And Blatt.Range("I5").Value = 1 Then
            ActiveSheet.Cells(Zeile, 1) = Blatt.Name
            Zeile = Zeile + 1
        End If
    Next Blatt
End Sub
  1. Schließe den VBA-Editor und gehe zurück zu deinem Excel-Arbeitsblatt.
  2. Aktiviere das Arbeitsblatt, um die Liste der Blattnamen zu generieren.

Dieser Code durchsucht alle Tabellenblätter und listet die Namen nur der Blätter auf, die in Zelle J4 und I5 den Wert 1 haben.


Häufige Fehler und Lösungen

  • Problem: Die Liste der Blattnamen wird nicht angezeigt.

    • Lösung: Überprüfe, ob du das Arbeitsblatt aktiviert hast, nachdem du den Code ausgeführt hast. Der Code wird nur aktiv, wenn das Arbeitsblatt aktiviert wird.
  • Problem: VBA gibt einen Fehler aus.

    • Lösung: Stelle sicher, dass die Zellreferenzen J4 und I5 in jedem Blatt vorhanden sind, da der Code sonst einen Laufzeitfehler verursacht.

Alternative Methoden

Falls du VBA nicht verwenden möchtest, gibt es auch eine Möglichkeit, die Excel-Blattnamen ohne VBA aufzulisten. Nutze die Funktion =SHEET() in Verbindung mit einer Hilfsspalte oder einer formatierten Tabelle. Allerdings ist diese Methode nicht so flexibel, wenn es um spezifische Bedingungen geht.


Praktische Beispiele

Hier ist ein Beispiel, wie du den VBA-Code anpassen kannst, um die Liste aller Tabellenblätter aufzulisten, die in J4 oder I5 einen Wert haben:

Private Sub Worksheet_Activate()
    Dim Zeile As Long
    Dim Blatt As Worksheet
    Zeile = 1
    ActiveSheet.Columns(1).ClearContents
    For Each Blatt In ActiveWorkbook.Worksheets
        If Not IsEmpty(Blatt.Range("J4")) Or Not IsEmpty(Blatt.Range("I5")) Then
            ActiveSheet.Cells(Zeile, 1) = Blatt.Name
            Zeile = Zeile + 1
        End If
    Next Blatt
End Sub

Mit diesem Code kannst du die Excel-Namen der Tabellenblätter auflisten, die in den angegebenen Zellen Daten haben.


Tipps für Profis

  • Fehlerbehandlung: Füge On Error Resume Next zu Beginn deines Codes hinzu, um Fehler zu ignorieren, wenn ein Blatt nicht die erwarteten Zellen hat.

  • Anpassungen: Du kannst den Code leicht anpassen, um zusätzliche Bedingungen hinzuzufügen oder andere Zellreferenzen zu verwenden.

  • Performance: Bei vielen Blättern kann der Code Zeit in Anspruch nehmen. Überprüfe, ob du die Anzahl der durchsuchten Blätter reduzieren kannst, oder arbeite mit spezifischen Namen.


FAQ: Häufige Fragen

1. Kann ich die Liste aller Tabellenblätter ohne VBA auflisten?
Ja, du kannst die Funktion =SHEET() in Kombination mit einer Hilfsspalte verwenden, aber das ist nicht so flexibel.

2. Wie kann ich die Bedingungen im VBA-Code ändern?
Du kannst die Bedingungen in der If-Anweisung anpassen, indem du die Zellreferenzen oder die Bedingungen entsprechend änderst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige