Gruppierungen per VBA ein- und ausblenden

Sie kennen sicherlich den Befehl um Zeilen oder Spalten mit Hilfe der Gruppierungsfunktion aus- und anschließend wieder einzublenden.

Wenn Sie eine Gruppierung einfügen, wird bei Zeilen-Gruppierungen ein Plus- bzw. Minussymbol links neben der Zeilennummerierung eingeblendet. Bei Gruppierung von Spalten werden die Symbole oberhalb der Spaltenbezeichnung angezeigt, siehe Abbildung zur Zeilengruppierung.

In diesem Beispiel werden die Gruppierungen verschachtelt. Das bedeutet, wenn Sie auf das Minuszeichen bei Zeile 8 klicken, werden die Zeilen 6 und 7 ausgeblendet. Ein Klick auf das Minus in Zeile 10 blendet die Zeilen 5-9 aus und das Minus in zeile 15 bewirkt, dass die Zeilen 3-14 ausgeblendet werden.

Die Ziffern 1-4 oberhalb der Zeilennummer 1 bedeutet, dass es insgesamt 4 Gruppierungsebenen gibt. Bei der vierten Gruppierungsebene handelt es sich um die Anzeige aller Zeilen.

Diese Gruppierungsebenen können nun ganz einfach per VBA angesprochen werden.
Zum einblenen aller Zeilen (Zeile 3-14) verwenden Sie bitte folgenden Code:

Sub einblenden()
'** RowLevel gibt die Gliederungstiefe an
Sheets("Tabelle1").Outline.ShowLevels RowLevels:=4
End Sub
Die Methode RowLevels:=4 sorgt dafür, dass alle Zeilen angezeigt werden.
Wenn Sie den Parameter von 4 auf 3 ändern wird die Gruppierungsebene 3 und damit die Zeilen 6-7 ausgeblendet.

Bei RowLevels:=2 werden die Zeilen 4-9 udn bei RowsLevels:=1 entsprechend alle Zeilen versteckt.

Auf diese Weise können per VBA ganz einfach zwischen den verschiedenen Gruppierungsebenen gewechselt werden.
Wenn Sie Spalten anstatt Zeilen gruppieren möchten, dann verwenden Sie anstatt RowLevels:=1 den Befehl ColumnLevels:=1.

Sub einblenden()
'** ColumnLevel gibt die Gliederungstiefe an
Sheets("Tabelle1").Outline.ShowLevels ColumnLevels:=4
End Sub

Hinweis:

Selbstverständlich funktioniert der Code nur, wenn Sie die Gruppierungen vorher manuell gesetzt haben. Ohne gesetzter Zeilen- oder Spaltengruppierung kann der VBA-Code keine Zeilen/Spalten ein- bzw. ausblenden.