491 Aufrufe
Gefragt in Windows 10 von
Hallo liebe Excel-Gemeinde,

leider finde ich nichts zu meinem Thema. Ich habe eine Tabelle mit Spalten, die je nach dem welchen Wert sie haben, augeblendet werden sollen. Wenn der Wert 1 ist, soll es die Spalten gruppieren.

Ist glaube ich gar nicht so schwer - leider habe ich VBA seit über 10 Jahren nicht mehr angewendet, sodass alle Kenntnisse weg sind.

Vielen Dank im Voraus für Eure Hilfe und viele Grüße

Ina

6 Antworten

0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Ina,

aus welcher Zelle soll denn der Wert geprüft werden?

Hier mal ein Beispiel, wie ein Makro zum Gruppieren aller Spalten aussehen könnte:

Sub gruppieren()

If Range("A1").Value = 1 Then
 With ActiveSheet
   'Gruppierung setzen
   .Range(.Cells(1, 1), .Cells(1, .UsedRange.SpecialCells(xlCellTypeLastCell).Column)).Columns.Group
   'Gruppierung einklappen
   .Outline.ShowLevels ColumnLevels:=1
 End With
End If

End Sub

Wenn in der Zelle A1 der Wert steht, werden die Spalten gruppiert und ausgeblendet.

Gruß

M.O.

0 Punkte
Beantwortet von
Hallo M.O.,

vielen Dank für die Antwort.

Die Datei sieht wie folgt aus:

ich habe ein Diagramm, das sich bis Spalte BL bezieht. Wenn alle Spalten aufgeklappt sind, dann verfälscht es das Diagramm, da die Zeitschiene zu lang ist. Durch eine Excel-Formel habe ich in Zeile 3 eine Abfrage gemacht, die eine 1 ausgibt, wenn die Spalten eingeklappt werden sollen.

Am besten wäre es, dass es jedes Mal, wenn das Tabellenblatt ausgewählt wird, die Gruppierung gelöst und wieder erneut gruppiert wird. Da die Datei gesperrt ist, müsste zuerst entsperrt werden und dann die Ausführung beginnen.

Vielen Dank nochmal
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)

Hallo Ina,

kopiere das folgenden Makro in das VBA-Projekt der Tabelle, in der die Spalten ausgeblendet werden sollen:

Private Sub Worksheet_Activate()
Dim s As Long

With ActiveSheet
  'Blattschutz aufheben
  .Unprotect "Passwort"
  'Spalten A bis BL durchlaufen
   For s = 1 To 64
     'Prüfen, ob in Zeile 3 der Wert 1 enthalten ist
      If .Cells(3, s).Value = 1 Then
         'falls ja, dann Spalte ausblenden
         .Columns(s).EntireColumn.Hidden = True
        Else
          'falls nicht, dann Spalte einblenden
          .Columns(s).EntireColumn.Hidden = False
     End If
   Next s
   'Blattschutz wieder setzen
   .Protect "Passwort"
End With

End Sub

Statt dem Wort Passwort zwischen den Anführungszeichen musst du das Passwort für die Tabelle einsetzen. Ist kein Passwort vergeben, dann richt Unprotect bzw. Protect.

Gruß

M.O.

0 Punkte
Beantwortet von
Hallo M.O.,

sorry, dass ich mich erst jetzt melde. Irgendwie habe ich keine Mail bekommen, dass mein Beitrag kommentiert wurde (naja, das Problem sitzt ja bekanntlich meist vor dem Rechner).

Vielen lieben Dank für das Makro! Funktionier prima! Muss jetzt nur noch rumprobieren, dass es jedes mal ausgeführt wird, wenn ich auf das Tabellenblatt gehe. Die Werte in der Tabelle werden aus einer anderen Tabelle verknüpft. Es kommt öfter vor, dass die Basis angepasst wird. Es kommt durchaus vor, dass während der Bearbeitung der Datei der Cash-Verlauf sich ändert.

Du hast mir sehr weiter geholfen! Vielen Dank dafür!

Gruß

Ina
0 Punkte
Beantwortet von
Ok, ich nehme es zurück - es funktioniert jedes Mal wenn ich auf das Tabellenblatt gehe.

Wie schon erwähnt - Problembehaftete User :-)

Danke!
0 Punkte
Beantwortet von m-o Profi (22.8k Punkte)
Hallo Ina,

danke für die Rückmeldung.

Gruß

M.O.
...