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

VBA - Gruppierung aufheben für bestimmte Zeilen

Forumthread: VBA - Gruppierung aufheben für bestimmte Zeilen

VBA - Gruppierung aufheben für bestimmte Zeilen
09.01.2014 17:41:05
Judith
Hallo zusammen,
ich bastle nun schon länger an meiner Datei und komme einfach nicht weiter.
Ich habe eine Datei mit diversen Zwischensummen. Die Bereiche zwischen diesen Zwischensummen sollen per VBA gruppiert werden.
Durch die Hilfe eines Forumsmitglieds und des folgenden Codes klappt das auch:
Sub Test()
Dim ErsteZeile As Long, LetzteZeile As Long, rngRange As Range, varRowZwischenSummen() As  _
Variant, intAnzZwischenSummen As Integer, rngZelle As Range
i As Integer
intAnzZwischenSummen = 0
With ActiveSheet
' Erste und letzte Zeile ermitteln
ErsteZeile = 3
LetzteZeile = .Cells(Rows.Count, 3).End(xlUp).Row
' Bereich festlegen
Set rngRange = .Range(.Cells(ErsteZeile, 3), .Cells(LetzteZeile, 3))
' Positionen der Zwischensummen ermitteln
For Each rngZelle In rngRange
If rngZelle.Value Like "*TOTAL*" Then
intAnzZwischenSummen = intAnzZwischenSummen + 1
ReDim Preserve varRowZwischenSummen(intAnzZwischenSummen)
varRowZwischenSummen(intAnzZwischenSummen) = rngZelle.Row
End If
Next rngZelle
' Gruppieren 1. Gruppe
Rows(ErsteZeile & ":" & varRowZwischenSummen(1) - 1).Rows.Group
' Gruppieren restliche Gruppen (zwischen zwei Summen)
For i = 1 To intAnzZwischenSummen - 1
Rows(varRowZwischenSummen(i) + 1 & ":" & varRowZwischenSummen(i + 1) - 1).Rows.Group
Next i
End With
End Sub
Mein Problem ist nun jedoch, dass ich in einigen Dateien nicht nur Zwischensumme, sondern auch Gesamtsummen habe, die ich nicht ausblenden möchte (siehe Beispiel):
https://www.herber.de/bbs/user/88749.xlsx
Ich habe es nicht geschafft diese Gesamtsummen aus der Gruppierung herauszuhalten, darum versuche ich nun für diese Zeilen am Ende des Makros die Gruppierung aufzuheben. Ich erhalte mit dem folgenden Code aber eine Fehlermeldung.
For ErsteZeile = 3 To LetzteZeile
If Cells(ErsteZeile, 3).Value = "SUMME" Then
Rows(ErsteZeile).Ungroup
End If
Next
Habt ihr vielleicht eine Idee?
Viele Grüße
Judith
End With

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - Gruppierung aufheben für bestimmte Zeilen
10.01.2014 08:35:28
Bastian
Hallo Judith,
der Fehler kommt, wenn Du die Gruppierung bei einer Zeile aufheben möchtest, die gar nicht gruppiert ist (in Deinem Fall die letzte Gesamtsumme).
Daher musst Du noch eine Prüfung einbauen, ob die Zeile auch gruppiert ist. Die Prüfung auf das Wort "SUMME" würde ich mit Like machen:
For ErsteZeile = 3 To LetzteZeile
If Cells(ErsteZeile, 3).Value Like "*SUMME*" Then
If Rows(ErsteZeile).OutlineLevel > 1 Then
Rows(ErsteZeile).Ungroup
End If
End If
Next
Gruß, Bastian

Anzeige
AW: VBA - Gruppierung aufheben für bestimmte Zeilen
10.01.2014 14:00:41
Judith
Hallo Bastian,
das funktioniert super. Vielen lieben Dank !!!
Viele Grüße Judith
Anzeige
Anzeige

Infobox / Tutorial

VBA: Gruppierung aufheben für bestimmte Zeilen


Schritt-für-Schritt-Anleitung

Um in Excel spezifische Gruppierungen aufzuheben, kannst Du das folgende VBA-Skript verwenden. Dieses Skript gruppiert zunächst die gewünschten Zeilen und hebt dann die Gruppierung für bestimmte Zeilen wie Gesamtsummen auf.

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Neues Modul erstellen: Klicke mit der rechten Maustaste auf "VBAProject (deine_datei.xlsm)" und wähle "Einfügen" > "Modul".

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Sub GruppierungAufheben()
       Dim ErsteZeile As Long, LetzteZeile As Long, rngRange As Range, varRowZwischenSummen() As Variant, intAnzZwischenSummen As Integer, rngZelle As Range
       Dim i As Integer
       intAnzZwischenSummen = 0
    
       With ActiveSheet
           ' Erste und letzte Zeile ermitteln
           ErsteZeile = 3
           LetzteZeile = .Cells(Rows.Count, 3).End(xlUp).Row
           ' Bereich festlegen
           Set rngRange = .Range(.Cells(ErsteZeile, 3), .Cells(LetzteZeile, 3))
           ' Positionen der Zwischensummen ermitteln
           For Each rngZelle In rngRange
               If rngZelle.Value Like "*TOTAL*" Then
                   intAnzZwischenSummen = intAnzZwischenSummen + 1
                   ReDim Preserve varRowZwischenSummen(intAnzZwischenSummen)
                   varRowZwischenSummen(intAnzZwischenSummen) = rngZelle.Row
               End If
           Next rngZelle
           ' Gruppieren 1. Gruppe
           Rows(ErsteZeile & ":" & varRowZwischenSummen(1) - 1).Rows.Group
           ' Gruppieren restliche Gruppen (zwischen zwei Summen)
           For i = 1 To intAnzZwischenSummen - 1
               Rows(varRowZwischenSummen(i) + 1 & ":" & varRowZwischenSummen(i + 1) - 1).Rows.Group
           Next i
    
           ' Gesamtsummen nicht gruppieren
           For ErsteZeile = 3 To LetzteZeile
               If Cells(ErsteZeile, 3).Value Like "*SUMME*" Then
                   If Rows(ErsteZeile).OutlineLevel > 1 Then
                       Rows(ErsteZeile).Ungroup
                   End If
               End If
           Next
       End With
    End Sub
  4. Skript ausführen: Schließe den VBA-Editor und kehre zu Excel zurück. Drücke ALT + F8, wähle GruppierungAufheben und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Fehlermeldung bei Ungroup: Du erhältst möglicherweise eine Fehlermeldung, wenn Du versuchst, die Gruppierung bei einer Zeile aufzuheben, die nicht gruppiert ist. Stelle sicher, dass Du die Prüfung auf die Gruppierung wie im obigen Beispiel vorgenommen hast.

  • Falsche Zeilen gruppiert: Überprüfe, ob die Bezeichnung der Zwischensummen korrekt ist. Das Skript verwendet die Bedingungen, die auf "TOTAL" oder "SUMME" basieren.


Alternative Methoden

Wenn Du keine VBA-Makros verwenden möchtest, kannst Du auch manuell die Gruppierungen in Excel aufheben:

  1. Wähle die Zeilen aus, die Du gruppiert hast.
  2. Gehe zu "Daten" > "Gliederung" > "Gruppierung aufheben".
  3. Du kannst auch die Tastenkombination ALT + Shift + - verwenden, um die Gruppierung aufzuheben.

Praktische Beispiele

Angenommen, Du hast eine Tabelle mit mehreren Zwischensummen und Gesamtsummen. Nach dem Ausführen des Skripts werden die Zeilen der Gesamtsummen nicht mehr gruppiert, während alle anderen Zeilen zwischen den Zwischensummen weiterhin gruppiert bleiben.


Tipps für Profis

  • Gruppierungen automatisch anpassen: Du kannst das Skript anpassen, um die Gruppierungen dynamisch basierend auf bestimmten Kriterien zu erstellen oder zu entfernen.
  • Fehlerprotokollierung: Füge eine Fehlerprotokollierung hinzu, um festzustellen, welche Zeilen Probleme verursachen, wenn Du die Gruppierungen aufhebst.

FAQ: Häufige Fragen

1. Wie kann ich alle Gruppierungen in einer Excel-Tabelle aufheben?
Du kannst alle Gruppierungen aufheben, indem Du zu "Daten" > "Gliederung" > "Gruppierung aufheben" gehst oder die Tastenkombination ALT + Shift + - verwendest.

2. Was passiert, wenn ich versuche, eine nicht gruppierte Zeile aufzuheben?
Wenn Du versuchst, eine nicht gruppierte Zeile aufzuheben, erhältst Du möglicherweise eine Fehlermeldung. Verwende zur Sicherheit die Prüfung im VBA-Code, um dies zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige