Live-Forum - Die aktuellen Beiträge
Datum
Titel
16.10.2025 17:40:39
16.10.2025 17:25:38
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Ein Makro auf mehreren Tabellenblättern ausführen

Ein Makro auf mehreren Tabellenblättern ausführen
24.04.2018 12:43:32
Josi
Hallo zusammen wie schaffe ich es das folgendes Makro
Sub Spieltag_1()
Range("a4:m36").Sort key1:=Range("e4"), order1:=xlAscending, _
key2:=Range("f4"), Order2:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("f4:f7").Font.ColorIndex = 10
Range("f8:f10").Font.ColorIndex = 3
End Sub

Nur auf bestimmten Tabellenblättern ausgeführt wird?
z.B. Tabellenblatt 5, Tabellenblatt, 11 Tabellenblatt 17
Vielen Dank
Josi
Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Ein Makro auf mehreren Tabellenblättern ausführen
24.04.2018 12:56:58
Mullit
Hallo,
bspw. so:
Sub Spieltag_1()
Select Case ActiveSheet.Name
Case "Tabellenblatt 5", "Tabellenblatt 11", "Tabellenblatt 17"
Range("a4:m36").Sort key1:=Range("e4"), order1:=xlAscending, _
key2:=Range("f4"), Order2:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("f4:f7").Font.ColorIndex = 10
Range("f8:f10").Font.ColorIndex = 3
End Select
End Sub

Gruß, Mullit
Anzeige
AW: Ein Makro auf mehreren Tabellenblättern ausführen
24.04.2018 13:04:38
Josi
Nicht ganz
es soll auf den bestimmten ausgeführt werden ohne das sie selektiert sind
also ich befinde auf irgendeinem Tabellenblatt und es soll auf auf bestimmten Tabellenblättern ausgeführt werden.
wie zum Beispiel
Tabellenblatt 5, Tabellenblatt, 11 Tabellenblatt 17
Vielen Dank Josi
Anzeige
AW: Ein Makro auf mehreren Tabellenblättern...
24.04.2018 13:11:27
Bernd
Servus Josi,
vielleicht so:

Sub Spieltag_1()
Dim ws as Worksheet
For Each ws in ThisWorkbook.Worksheets
Select Case ws.Name
Case "Tabellenblatt 5", "Tabellenblatt 11", "Tabellenblatt 17"
Range("a4:m36").Sort key1:=Range("e4"), order1:=xlAscending, _
key2:=Range("f4"), Order2:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
DataOption3:=xlSortNormal
Range("f4:f7").Font.ColorIndex = 10
Range("f8:f10").Font.ColorIndex = 3
End Select
Next ws
End Sub
Grüße, Bernd
Anzeige
AW: Ein Makro auf mehreren Tabellenblättern...
24.04.2018 13:18:58
Josi
Nein leider nicht
er führt die Sortierung immer nur auf dem aktiven Tabellenblatt
AW: Ein Makro auf mehreren Tabellenblättern...
24.04.2018 13:51:10
Mullit
Hallo,
yo, da hatt ich Dich mißverstanden, mit nem Loop wie Bernd schrieb, nur mußt du noch alle Zellzugriffe mit dem Sheet referenzieren, nicht getested, aber grob so die Richtung...
Option Explicit
Sub Spieltag_1()
Dim wksSheet As Worksheet
For Each wksSheet In ThisWorkbook.Worksheets
With wksSheet
Select Case .Name
Case "Tabellenblatt 5", "Tabellenblatt 11", "Tabellenblatt 17"
.Range("a4:m36").Sort key1:=.Range("e4"), order1:=xlAscending, _
key2:=.Range("f4"), Order2:=xlAscending, _
Header:=xlGuess, OrderCustom:=1, MatchCase:=False,  _
Orientation:= _
xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:= _
xlSortNormal, _
DataOption3:=xlSortNormal
.Range("f4:f7").Font.ColorIndex = 10
.Range("f8:f10").Font.ColorIndex = 3
End Select
End With
Next
End Sub

Gruß, Mullit
Anzeige
AW: Ein Makro auf mehreren Tabellenblättern...
24.04.2018 15:17:56
Josi
Vielen Dank euch beiden hat geklappt
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Ein Makro auf mehreren Tabellenblättern ausführen


Schritt-für-Schritt-Anleitung

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf "VBAProject (dein Arbeitsbuch)", wähle "Einfügen" und dann "Modul".

  3. Kopiere das folgende Makro in das Modul:

    Option Explicit
    Sub Spieltag_1()
        Dim wksSheet As Worksheet
        For Each wksSheet In ThisWorkbook.Worksheets
            With wksSheet
                Select Case .Name
                    Case "Tabellenblatt 5", "Tabellenblatt 11", "Tabellenblatt 17"
                        .Range("a4:m36").Sort key1:=.Range("e4"), order1:=xlAscending, _
                        key2:=.Range("f4"), Order2:=xlAscending, _
                        Header:=xlGuess, OrderCustom:=1, MatchCase:=False, _
                        Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal, _
                        DataOption3:=xlSortNormal
                        .Range("f4:f7").Font.ColorIndex = 10
                        .Range("f8:f10").Font.ColorIndex = 3
                End Select
            End With
        Next
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus: Drücke ALT + F8, wähle Spieltag_1 und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Makro wird nicht ausgeführt: Stelle sicher, dass die Makros in Excel aktiviert sind. Gehe zu "Datei" > "Optionen" > "Trust Center" > "Einstellungen für das Trust Center" und aktiviere die Makros.
  • Sortierung funktioniert nicht: Achte darauf, dass die angegebenen Tabellenblattnamen exakt übereinstimmen. Ein Tippfehler führt dazu, dass das Makro nicht ausgeführt wird.
  • Keine Änderungen sichtbar: Überprüfe, ob Du tatsächlich auf den richtigen Tabellenblättern arbeitest und dass die Zellen in den Bereichen A4:M36 tatsächlich Daten enthalten.

Alternative Methoden

Eine alternative Methode zur Ausführung des Makros auf mehreren Tabellenblättern ist die Verwendung von Application.Worksheets. Hier ist ein Beispiel:

Sub Spieltag_1_Alternative()
    Dim ws As Worksheet
    Dim sheetsToProcess As Variant
    sheetsToProcess = Array("Tabellenblatt 5", "Tabellenblatt 11", "Tabellenblatt 17")

    For Each ws In ThisWorkbook.Worksheets
        If Not IsError(Application.Match(ws.Name, sheetsToProcess, 0)) Then
            ' Sortier- und Formatierungslogik hier einfügen
        End If
    Next ws
End Sub

Diese Methode verwendet ein Array, um die relevanten Tabellenblätter zu speichern, und führt die Sortierung nur auf diesen aus.


Praktische Beispiele

Hier sind einige praktische Beispiele, die auf den oben beschriebenen Makros basieren:

  1. Sortieren nach einer anderen Spalte: Ändere key1:=.Range("e4") zu key1:=.Range("g4"), um nach einer anderen Spalte zu sortieren.
  2. Farben anpassen: Ändere die Font.ColorIndex, um unterschiedliche Farben für verschiedene Zellbereiche festzulegen.
  3. Anpassung für mehr Tabellenblätter: Füge einfach weitere Namen in die Select Case Anweisung ein, um das Makro auf mehr Tabellenblätter anzuwenden.

Tipps für Profis

  • Verwende Option Explicit: Dies stellt sicher, dass alle Variablen deklariert werden, was Fehler vermeidet.
  • Führe eine Fehlerbehandlung ein: Nutze On Error Resume Next, um mit möglichen Laufzeitfehlern umzugehen.
  • Testen auf einer Kopie: Teste Dein Makro immer zuerst in einer Kopie Deiner Arbeitsmappe, um unbeabsichtigte Änderungen zu vermeiden.

FAQ: Häufige Fragen

1. Wie kann ich das Makro anpassen, um mehr Tabellenblätter einzuschließen?
Füge einfach die Namen der zusätzlichen Tabellenblätter in die Select Case Anweisung ein.

2. Was mache ich, wenn das Makro nicht reagiert?
Überprüfe, ob Du das Makro korrekt ausgeführt hast und ob die Makros in den Excel-Optionen aktiviert sind.

3. Kann ich das Makro auch in Excel 365 verwenden?
Ja, das Makro ist mit Excel 365 und anderen Versionen von Excel kompatibel, solange Du Zugang zum VBA-Editor hast.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige