Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Per VBA alle Gruppierungen einer Datei schließen

Forumthread: Per VBA alle Gruppierungen einer Datei schließen

Per VBA alle Gruppierungen einer Datei schließen
17.10.2007 10:01:00
Melanie
Hallo VBA-Profis,
ich habe folgende Frage; ich würde gerne in einer Datei per VBA in allen Tabellenblättern prüfen lassen, ob es Gruppierungen gibt und diese dann ggf. schließen lassen, sprich, dass sie ganz zugeklappt sind. Es soll also eine Schleife durch alle Tabellenblätter laufen und das prüfen bzw. tun.
Die Anzahl der Tabellenblätter kann dabei variieren und es sind nicht in jedem Blatt zwingend Gruppierungen vorhanden. Die Anzahl der Stufen der Gruppierungen kann ebenfalls variieren.
Wer kann mir hier helfen?
Im Voraus besten Dank!
Grüße, Melanie

Anzeige

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per VBA alle Gruppierungen einer Datei schließen
17.10.2007 10:11:00
Melanie
Hallo Melanie,
ich glaub dieses Makro dürfte die weiterhelfen
Einfach in ein Modul einfügen und ggf. mit einem Button verbinden
Viele Grüße
Hendryk

Sub Gruppierung_zuklappen()
Dim wks As Worksheet
For Each wks In Application.Worksheets
If InStr(wks.Name, 1) Then
wks.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
wks.Outline.ShowLevels RowLevels:=1
End If
Next wks
End Sub


und das Pendant dazu


Sub Gruppierung_aufklappen()
Dim wks As Worksheet
For Each wks In Application.Worksheets
If InStr(wks.Name, 1) Then
wks.Outline.ShowLevels RowLevels:=0, ColumnLevels:=5
wks.Outline.ShowLevels RowLevels:=2
wks.Outline.ShowLevels RowLevels:=3
End If
Next wks
End Sub


Anzeige
AW: Per VBA alle Gruppierungen einer Datei schließen
17.10.2007 10:18:06
Melanie
Hi Hendryk,
erst mal Danke für Deine Hilfe, ich hab das direkt mal ausprobiert, aber leider passiert nichts :o(

AW: Per VBA alle Gruppierungen einer Datei schließen
17.10.2007 10:25:00
Melanie
Hallo Melanie,
setz einfach mal vor den Tabellenblattnamen eine 1. (so: 1_tabelle1). Das makro steuert dann jede seite an, die mit 1 beginnt.
Viele Grüße
Hendryk

Anzeige
AW: Per VBA alle Gruppierungen einer Datei schließen
17.10.2007 10:29:27
Melanie
Jetzt klappt es, nur sollte ich den Namen natürlich frei wählen können. Es ist eine Aufgabe, die regelmäßig gemacht werden muss und ich würde ungern vorher alle Tabellenblätter umbennen müssen...
Gibts da ne Möglichkeit?

AW: Per VBA alle Gruppierungen einer Datei schließen
17.10.2007 10:32:51
Melanie
Hi Hendryk,
ich habs hingekriegt, so läuft es:

Sub Gruppierung_zuklappen()
Dim wks As Worksheet
For Each wks In Application.Worksheets
wks.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
wks.Outline.ShowLevels RowLevels:=1
Next wks
End Sub


Vielen lieben Dank für Deíne Hilfe!!
Grüße, Melanie

Anzeige
AW: Per VBA alle Gruppierungen einer Datei schließen
17.10.2007 10:34:00
Melanie
Super, sonst hätt ich mich jetzt beigemacht und dir das etwas umgeschrieben.
Viele Grüße
Hendryk

Blattschutz?
17.10.2007 10:56:12
Melanie
Mir ist gerade noch was aufgefallen, es kann sein, dass die Tabellenblätter geschützt sind. Es sollte also bei jedem Blatt geprüft werden, ob es geschützt ist und wenn ja der Blattschutz aufgehoben werden und anschließend wieder reingesetzt werden. Ich hab das mal versucht aufzusetzen, aber wie ihr seht fang ich mit VBA gerade erst an...

Sub Gruppierung_zuklappen_2()
Dim wks As Worksheet
For Each wks In Application.Worksheets
If ActiveSheet.Protect = True Then
ActiveSheet.Unprotect
wks.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
wks.Outline.ShowLevels RowLevels:=1
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True
Else
wks.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
wks.Outline.ShowLevels RowLevels:=1
End If
Next wks
End Sub


Anzeige
AW: Blattschutz?
17.10.2007 11:11:30
Josef
Hallo Melanie,
auf die Abfrage kannst du verzichten.
Sub Gruppierung()
Dim objWS As Worksheet
Dim blnProtect As Boolean

For Each objWS In ThisWorkbook.Worksheets
    With objWS
        blnProtect = .ProtectContents
        .Unprotect
        .Outline.ShowLevels 1, 1
        If blnProtect Then .Protect
    End With
Next

End Sub

Gruß Sepp

Anzeige
Danke!
17.10.2007 11:21:00
Melanie
Funktioniert! Vielen Dank!

AW: Per VBA alle Gruppierungen einer Datei schließen
17.10.2007 10:41:31
Josef
Hallo Melanie,
das sollte es tun.
Sub Gruppierung()
Dim objWs As Worksheet

For Each objWs In ThisWorkbook.Worksheets
    objWs.Outline.ShowLevels 1, 1
Next

End Sub

Gruß Sepp

Anzeige
;
Anzeige

Infobox / Tutorial

Alle Gruppierungen in Excel per VBA schließen und öffnen


Schritt-für-Schritt-Anleitung

Um alle Gruppierungen in einer Excel-Datei per VBA zu schließen oder zu öffnen, kannst du die folgenden Schritte befolgen:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Erstelle ein neues Modul:

    • Klicke im Menü auf Einfügen und wähle Modul.
  3. Füge den folgenden Code ein, um alle Gruppierungen zu schließen:

    Sub Gruppierung_zuklappen()
       Dim wks As Worksheet
       For Each wks In Application.Worksheets
           wks.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
           wks.Outline.ShowLevels RowLevels:=1
       Next wks
    End Sub
  4. Füge den folgenden Code ein, um alle Gruppierungen zu öffnen:

    Sub Gruppierung_aufklappen()
       Dim wks As Worksheet
       For Each wks In Application.Worksheets
           wks.Outline.ShowLevels RowLevels:=1, ColumnLevels:=1
       Next wks
    End Sub
  5. Führe das Makro aus, indem du im VBA-Editor auf Ausführen klickst oder F5 drückst.


Häufige Fehler und Lösungen

  • Makro wird nicht ausgeführt: Stelle sicher, dass die Makros in den Excel-Optionen aktiviert sind. Gehe zu Datei > Optionen > Trust Center > Einstellungen für das Trust Center und aktiviere die Makros.

  • Keine Wirkung auf geschützte Blätter: Wenn die Blätter geschützt sind, musst du den Blattschutz vorübergehend aufheben. Verwende dazu die Unprotect-Methode, bevor du versuchst, die Gruppierungen zu ändern.


Alternative Methoden

Wenn du keine VBA-Makros verwenden möchtest, kannst du die Gruppierungen auch manuell schließen oder öffnen:

  1. Wähle die entsprechenden Zeilen oder Spalten aus.
  2. Gehe zu Daten in der Menüleiste.
  3. Klicke auf Gruppieren und wähle die gewünschte Aktion (z.B. Einklappen oder Ausklappen).

Praktische Beispiele

Hier ist ein Beispiel, wie du den Blattschutz in dein Makro einfügen kannst, um sicherzustellen, dass du die Gruppierungen auch auf geschützten Blättern ändern kannst:

Sub Gruppierung_zuklappen_mit_Schutz()
    Dim wks As Worksheet
    For Each wks In Application.Worksheets
        Dim blnProtect As Boolean
        blnProtect = wks.ProtectContents
        If blnProtect Then wks.Unprotect
        wks.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
        wks.Outline.ShowLevels RowLevels:=1
        If blnProtect Then wks.Protect
    Next wks
End Sub

Tipps für Profis

  • Verwende Application.ScreenUpdating = False am Anfang deines Makros, um die Ausführungsgeschwindigkeit zu erhöhen, und setze es am Ende wieder auf True.
  • Nutze die Debug.Print-Anweisung, um Werte zu überprüfen und Fehler leichter zu identifizieren.

FAQ: Häufige Fragen

1. Wie kann ich alle Gruppierungen in einer bestimmten Tabelle schließen? Du kannst den Code so anpassen, dass er nur für eine bestimmte Tabelle ausgeführt wird, indem du den Namen des Blattes angibst.

2. Was passiert, wenn ich das Makro in einer Version von Excel ausführe, die keine Gruppierungen unterstützt? In diesem Fall wird der Code einfach ignoriert, und es passiert nichts. Stelle sicher, dass du eine Version von Excel verwendest, die die Gruppierungsfunktionen unterstützt.

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