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

Forumthread: Alle Tabellenblätter mit Schleife durchlaufen

Alle Tabellenblätter mit Schleife durchlaufen
Mandy
Hallo,
ich habe eine Mappe mit mehreren Tabellenblätter. Auf allen Tabellenblätter, die mit "Bestand" beginnen, möchte ich ein bestimmtest Makro ausführen.
Wie starte ich einen Durchlauf, bei dem ich die einzelnen "Bestand xxx" Tabellenblätter durchlaufe und überall mein Makro ausführen kann ?
Danke
Mandy
Anzeige
AW: Alle Tabellenblätter mit Schleife durchlaufen
21.09.2010 09:31:30
Hajo_Zi
Hallo Mandy,
Private Sub Aufheben()
Dim WsTabelle As Worksheet
For Each WsTabelle In Sheets
With WsTabelle
' Dein Makro, Cells und Range mit Punkt
End With
Next WsTabelle
End Sub

Anzeige
AW: Alle Tabellenblätter mit Schleife durchlaufen
21.09.2010 09:58:25
Mandy
Hallo Hajo,
ich weiß nicht, ob wir vom gleiche reden. Durchläuft der Code alle Tabellenblätter, die mit "Bestand" beginnen ? (können unterschiedlich heißen > "Bestend CPU", "Bestand MEM"; "Bestand ROM" ....)
Das code führt mein Makro immer nur auf dem aktiven Tabellenblatt aus, wechselt aber nicht zum nächsten.
Gruß
Mandy
Anzeige
AW: Alle Tabellenblätter mit Schleife durchlaufen
21.09.2010 10:00:20
Hajo_Zi
Hallo Mandy,
es Stand doch alle durchlaufen und das macht das Makro. Auf select und Activate kann zu 99,9% _ verzichtet werden. Den Text

Cells und Range mit Punkt
hast Du schon beachtet?
Gruß Hajo
Anzeige
AW: Alle Tabellenblätter mit Schleife durchlaufen
21.09.2010 10:17:14
Mandy
Hallo Hajo,
OK, mein Makro wird in allen Tabellenblätter ausgeführt, aber leider in ALLEN. Der Code soll nur da ausgeführt werden, bei denen das Tabellenblatt mit "Bestand" beginnt (erst 7 Zeichen) , andere Tabellenblätter sollen ausgeschlossen werden.
Danke
Mandy
AW: Alle Tabellenblätter mit Schleife durchlaufen
21.09.2010 10:21:49
Hajo_Zi
Hallo Mandy,
Option Explicit
Private Sub Aufheben()
Dim WsTabelle As Worksheet
For Each WsTabelle In Sheets
If Left(WsTabelle.Name, 7) = "Bestand" Then
With WsTabelle
' Dein Makro, Cells und Range mit Punkt
End With
End If
Next WsTabelle
End Sub
Gruß Hajo
Anzeige
ah, jetzt, danke schön owT :-)
21.09.2010 11:11:49
Mandy

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Alle Tabellenblätter in Excel mit VBA durchlaufen


Schritt-für-Schritt-Anleitung

Um alle Tabellenblätter in Excel mit VBA zu durchlaufen, kannst du den folgenden Code verwenden. Dieser Code durchläuft alle Tabellenblätter und führt ein bestimmtes Makro nur auf den Blättern aus, deren Name mit "Bestand" beginnt:

Private Sub Aufheben()
    Dim WsTabelle As Worksheet
    For Each WsTabelle In Sheets
        If Left(WsTabelle.Name, 7) = "Bestand" Then
            With WsTabelle
                ' Dein Makro, Cells und Range mit Punkt
            End With
        End If
    Next WsTabelle
End Sub

Du kannst diesen VBA-Code in das Modul deiner Excel-Arbeitsmappe einfügen. Achte darauf, dass du das Makro an die spezifischen Anforderungen deiner Anwendung anpasst.


Häufige Fehler und Lösungen

  1. Problem: Das Makro wird nicht auf den gewünschten Tabellenblättern ausgeführt.
    Lösung: Stelle sicher, dass der Name des Tabellenblatts tatsächlich mit "Bestand" beginnt. Überprüfe auch, ob der Code in einem gültigen VBA-Modul eingefügt wurde.

  2. Problem: Das Makro wird auf allen Tabellenblättern ausgeführt.
    Lösung: Vergewissere dich, dass die If-Bedingung korrekt ist und dass der Name der Tabellenblätter mit "Bestand" beginnt.


Alternative Methoden

Wenn du eine Excel-Loop-Formel verwenden möchtest, um bestimmte Daten in allen Tabellenblättern zu aggregieren, könntest du auch die folgende Formel verwenden. Beachte, dass dies nicht in einer VBA-Umgebung funktioniert, sondern direkt in Excel:

=SUMMEWENN(Bestand!A:A, "Kriterium", Bestand!B:B)

Hierbei wird die Summe aller Werte in Spalte B berechnet, die den Kriterien in Spalte A entsprechen, für das Tabellenblatt "Bestand".


Praktische Beispiele

Ein praktisches Beispiel wäre, wenn du auf jedem "Bestand"-Tabellenblatt die Seitenränder anpassen möchtest. Der VBA-Code könnte so aussehen:

Private Sub SeitenraenderAnpassen()
    Dim WsTabelle As Worksheet
    For Each WsTabelle In Sheets
        If Left(WsTabelle.Name, 7) = "Bestand" Then
            With WsTabelle.PageSetup
                .TopMargin = Application.InchesToPoints(1)
                .BottomMargin = Application.InchesToPoints(1)
                .LeftMargin = Application.InchesToPoints(0.75)
                .RightMargin = Application.InchesToPoints(0.75)
            End With
        End If
    Next WsTabelle
End Sub

Dieser Code sorgt dafür, dass die Seitenränder für alle Tabellenblätter mit dem Namen "Bestand" entsprechend gesetzt werden.


Tipps für Profis

  • Verwende Option Explicit am Anfang deines Codes, um sicherzustellen, dass alle Variablen deklariert sind. Dies hilft, Fehler zu vermeiden.
  • Teste deinen Code in einer Kopie deiner Excel-Datei, um ungewollte Änderungen an wichtigen Daten zu verhindern.
  • Nutze die Debug.Print-Anweisung, um Zwischenergebnisse während der Ausführung deines Makros anzuzeigen und zu prüfen, ob der Code wie gewünscht funktioniert.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass das Makro nur auf ausgewählten Blättern ausgeführt wird?
Stelle sicher, dass du die If-Bedingung richtig einstellst, sodass das Makro nur auf den Blättern ausgeführt wird, die mit "Bestand" beginnen.

2. Kann ich den Code auch für andere Bedingungen anpassen?
Ja, du kannst die If-Bedingung anpassen, um andere Namensmuster oder Bedingungen zu berücksichtigen, je nach deinen Anforderungen.

3. Welche Excel-Version benötige ich, um diesen VBA-Code auszuführen?
Der VBA-Code sollte in den meisten modernen Excel-Versionen (Excel 2010 und höher) funktionieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige