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

Outline.ShowLevels nur für Teilbereich festlegen

Forumthread: Outline.ShowLevels nur für Teilbereich festlegen

Outline.ShowLevels nur für Teilbereich festlegen
13.11.2007 10:53:22
Jochen
Hi VBA-Profis,
ich möchte gerne für einen Teil der Spalten meiner Excelliste die Gruppierungen per Makro zurücksetzen und habe dafür folgenden Code:
ActiveSheet.Range("A:" & letzte_kopier_Spalte).Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
Für alle Spalten rechts von "letzte_kopier_Spalte" sollen die Gruppierungen so bleiben wie sie sind.
Hat jemand eine Idee, wie man das lösen könnte?
Vielen Dank und schöne Grüße,
Jo

Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Gruppierung und Gliederung VBA programmieren
16.11.2007 13:06:00
Wolli
Gruppierung und Gliederung VBA programmieren
Hallo Jochen,
da habe ich mal geforscht. Es scheint sich folgendermaßen zu verhalten:
Über das Outline-Objekt können nur insgesamt die eingeblendeten Ebenen dargestellt werden. (Manuell: Klick auf die Zahlen in der Gliederungszeile/-spalte) Die einzelnen Ein- und Ausblendungen (Klick +/-) werden über "ShowDetail" als Eigenschaft der Zeile oder Spalte festgelegt. Das Outline-Level ist ebenfalls eine Eigenschaft jeder Zeile oder Spalte: Normalerweise 1, im Falle von Gliederungen höher.
Die ShowDetail-Eigenschaft kann stets abgefragt werden, sie kann jedoch nur festgelegt werden, wenn das Outline-Level der Zeile/Spalte größer als 1 ist.
Die Group-Methode macht meines Erachtens nichts anderes, als die Outline-Levels trickreich festzulegen.
Für dich würde das bedeuten: Für den ersten Teil der Gliederung alle Spalten auf Showdetail = True zu setzen und alle Folgespalten auf False, wobei natürlich nur die Spalten mit Outlinelevel > 1 berücksichtigt werden dürfen.
Ich versuch's mal:

Sub Gliederung_einstellen()
Dim letzte_kopier_Spalte As Long, _
spalte As Range
letzte_kopier_Spalte = 6
For Each spalte In ActiveSheet.UsedRange.Columns
If spalte.OutlineLevel > 1 Then
If spalte.Column 


Gruß, Wolli

Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Outline.ShowLevels für Teilbereich in Excel VBA nutzen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und lade das Arbeitsblatt, in dem du die Gliederung anpassen möchtest.
  2. Öffne den VBA-Editor mit ALT + F11.
  3. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (DeinWorkbookName)“, wähle „Einfügen“ und dann „Modul“.
  4. Kopiere und füge den folgenden Code ein:

    Sub Gliederung_einstellen()
       Dim letzte_kopier_Spalte As Long
       Dim spalte As Range
       letzte_kopier_Spalte = 6 ' Setze hier die letzte Spalte, die du bearbeiten möchtest
    
       ActiveSheet.Range("A:" & letzte_kopier_Spalte).Outline.ShowLevels RowLevels:=1, ColumnLevels:=1
    
       For Each spalte In ActiveSheet.UsedRange.Columns
           If spalte.OutlineLevel > 1 Then
               If spalte.Column <= letzte_kopier_Spalte Then
                   spalte.ShowDetail = True
               Else
                   spalte.ShowDetail = False
               End If
           End If
       Next spalte
    End Sub
  5. Passe die Variable letzte_kopier_Spalte an, um zu bestimmen, welche Spalten du zurücksetzen möchtest.
  6. Führe das Makro aus mit F5 oder über „Run“ im Menü.

Häufige Fehler und Lösungen

  • Fehler: "Objekt nicht gefunden"

    • Lösung: Stelle sicher, dass der Arbeitsblattname korrekt ist und dass du das richtige Arbeitsblatt aktiv hast.
  • Fehler: OutlineLevel gibt einen Fehler zurück

    • Lösung: Überprüfe, ob die Spalte tatsächlich eine Gliederung hat. Wenn nicht, kann OutlineLevel nicht abgerufen werden.
  • ShowDetail funktioniert nicht

    • Lösung: Achte darauf, dass das OutlineLevel der Spalte größer als 1 ist, sonst kann die ShowDetail-Eigenschaft nicht gesetzt werden.

Alternative Methoden

Wenn du nicht mit VBA arbeiten möchtest, kannst du auch manuell die Outline in Excel anpassen:

  1. Markiere die Spalten, die du gruppieren möchtest.
  2. Gehe zu "Daten" → "Gruppieren" und wähle die gewünschte Option aus.
  3. Du kannst die Gliederung dann über die Zahlen an der linken Seite der Tabelle steuern.

Praktische Beispiele

Ein Beispiel für die Anwendung des outline.showlevels in einem größeren Kontext könnte so aussehen:

Sub Beispiel_Outline()
    ' Setzt die ersten zwei Ebenen der Gliederung sichtbar
    ActiveSheet.Outline.ShowLevels RowLevels:=2, ColumnLevels:=1
End Sub

In diesem Beispiel wird RowLevels auf 2 gesetzt, sodass zwei Ebenen der Gruppierung sichtbar sind. Dies kann nützlich sein, wenn du mehrere Gliederungsebenen in deiner Tabelle hast.


Tipps für Profis

  • Nutze die VBA-Optionen wie Application.ScreenUpdating = False, um das Flackern beim Ausführen von Makros zu vermeiden.
  • Verwende Fehlerbehandlungsroutinen in deinem VBA-Code, um Probleme schnell zu identifizieren und zu beheben.
  • Experimentiere mit verschiedenen RowLevels und ColumnLevels, um die beste Darstellung deiner Daten zu finden.

FAQ: Häufige Fragen

1. Was ist der Unterschied zwischen RowLevels und ColumnLevels?
RowLevels bezieht sich auf die Anzahl der angezeigten Ebenen in den Zeilen, während ColumnLevels die gleichen Einstellungen für die Spalten betrifft.

2. Kann ich Outline.ShowLevels auf mehrere Arbeitsblätter anwenden?
Ja, du kannst eine Schleife über die Arbeitsblätter in deiner Arbeitsmappe erstellen und Outline.ShowLevels auf jedes Arbeitsblatt anwenden.

3. Welche Excel-Version benötige ich für diese VBA-Methoden?
Die beschriebenen VBA-Methoden sind in Excel 2007 und späteren Versionen verfügbar.

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