Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1304to1308
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Gruppierung per VBA ausblenden

Gruppierung per VBA ausblenden
18.03.2013 19:45:19
Der
Hallo allerseits,
benötige Hilfe zu folgendem Problem:
Folgender Gedanke: In Spalte A von Zeile 21 bis 44 gehören immer 4 Zeilen zu einem Block und sind dementsprechend gruppiert(21,22,23,24 - 26,27,28,29 usw.).Nun möchte ich prüfen,welche Blöcke leer sind und diese Gruppierung dann ausblenden.
Die Prüfung läuft folgendermassen ab:

Sub GruppierungAusblenden()
Dim Zei As Long
With Sheets(1)
For Zei = 21 To 44 Step 5
If Application.CountBlank(.Range("A" & Zei & ":A" & Zei + 3)) = 4 Then
MsgBox "Es sind leere Blöcke vorhanden"
End If
Next Zei
End With
End Sub

Anstatt der MsgBox sollen nun über "ActiveSheet.Outline.showLevels RowLevels"(hab die Funktion im Forum gefunden) alle leeren Blöcke auf einmal oder auch nacheinander ausgeblendet werden.Die +-Zeichen zum manuellen Einblenden müssen dabei vorhanden bleiben.
Wie bewerkstellige ich das? Oder gibt es ne cleverere Lösung dafür?
LG Der Blondie

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Gruppierung per VBA ausblenden
18.03.2013 22:08:56
Luschi
Hallo Blondie,
hier mal 3 Makros zur Neufestlegung der Gruppierung und zum Öffnen/Schließen der
Gruppierung

Sub GruppierungNeuSetzen()
Dim Zei As Long
With Sheets(1)
On Error Resume Next
.Range("A21:A44").Rows.Ungroup
'End
On Error GoTo 0
For Zei = 21 To 44 Step 5
If Application.CountBlank(.Range("A" & Zei & ":A" & Zei + 3)) = 4 Then
.Range("A" & Zei & ":A" & Zei + 3).Rows.Group
End If
Next Zei
End With
End Sub
Sub GruppierungEinAus_1()
'mit Application.ExecuteExcel4Macro
Dim Zei As Long
With Sheets(1)
For Zei = 21 To 44 Step 5
If Application.CountBlank(.Range("A" & Zei & ":A" & Zei + 3)) = 4 Then
If .Rows(Zei).EntireRow.Hidden Then
Application.ExecuteExcel4Macro "SHOW.DETAIL(1," & Zei + 3 & ",True)"
Else
Application.ExecuteExcel4Macro "SHOW.DETAIL(1," & Zei + 3 & ",False)"
End If
End If
Next Zei
End With
End Sub
Sub GruppierungEinAus_2()
'mit CommandBars.FindControl
Dim cbc As CommandBarControl
Dim Zei As Long
With Sheets(1)
For Zei = 21 To 44 Step 5
If Application.CountBlank(.Range("A" & Zei & ":A" & Zei + 3)) = 4 Then
.Cells(Zei + 4, 1).Select
If Selection.Offset(-1, 0).EntireRow.Hidden Then
Set cbc = CommandBars.FindControl(, 462)
Else
Set cbc = CommandBars.FindControl(, 464)
End If
If Not cbc Is Nothing Then
cbc.Execute
End If
Set cbc = Nothing
End If
Next Zei
End With
End Sub
Erstaunlich, daß weder Excel E2007 ... E2013 das Auf- und Zuklappen der Gliederung aufzeichnet. Excel 2003 hatte damit keine Probleme, wenn man es über das Menü
'Daten- Gruppierung und Gliederung' macht.
Gruß von Luschi
aus klein-Paris

Anzeige
AW: Gruppierung per VBA ausblenden
19.03.2013 10:10:03
Der
Guten Morgen Luschi,
vielen Dank. Alle 3 laufen perfekt. Das Erste ist zwar nicht geeignet,aber die anderen beiden umso mehr. Nun muss ich mal testen ob es da Unterschiede gibt.Bisher habe ich noch keine entdeckt.
Was ich aber noch gerne gewusst hätte ist:
Was ist "CommandBars.FindControl" ? Ich finde dazu keine adäquate Erklärung. Ich vermute mal,dass dies irgendeine Schaltfläche oder sowas ist. Wenn ja,wo finde ich die?
Nochmals vielen Dank
Gruß Der Blondie

AW: Gruppierung per VBA ausblenden
19.03.2013 10:51:47
Luschi
Hallo Blondie,
M$ hat mit Office 2007 eigentlich das CommandBar-Object für den gewöhnlichen user abgeschaft und dafür die BLÖDEN!!! Ribbon/Menüband-Objekte eingeführt. Für den Vba-Programmierer stehen 'Commandbars' noch zur Verfügung, werden aber in das Add-Ins'-RibbonTab verschoben.
Wenn man aber einen Vergleich des Commandbar-Objektes von Excel 2003 zu 2007/2010/2013 vergleicht, dann muß man feststellen, daß das dieses Objekt weiter existiert und immer mehr ausgebaut wird.
Mein Verdacht, daß Ribbon nur die schöne Oberfläche bietet, aber im Hintergrund weiter das Commandbar-Objekt regiert, verstärkt sich immer mehr. So sind die Kontext-Menüs auch nur über das Commandbar-Objekt ansprechbar.
Will man also per Vba ein Objekt aus Ribbon/Menüband anklicken, so wie es sonst der User mit der Maus macht, dann benutzt man vom Commandbars-Objekt die FindControl-Methode über eine eineindeutige ID-Nummer. Diese kann man per Vba auslesen und wundert sich, wie dieses Objekt in jeder neuen Version wächst & wächst & ...
Gruß von Luschi
aus klein-Paris
PS: Wer jetzt einwendet, ja aber die Dateistruktur ist doch auf XML umgestellt worden, der soll sich mal Access 2013 ansehen. Nix xml, weiter eine propitäre Dateistruktur, Alles in Einem.

Anzeige
AW: Gruppierung per VBA ausblenden
19.03.2013 18:53:21
Der
Hallo Luschi,
diese Erklärung ist mir eindeutig zu hoch. Da ich wie zunächst gedacht,keine besondere Schaltfläche oder ähnliches betätigen muss,messe ich dieser Methode erstmal keine weitere Bedeutung zu.
Nochmals vielen Dank für die Makro´s. Eine Frage hätte ich noch. Worin liegt der Unterschied zwischen GruppierungEinAus_1(Code 2)und GruppierungEinAus_2(Code 3). Ich merke immer noch keinen Unterschied.
Gruß Frank

AW: Gruppierung per VBA ausblenden
19.03.2013 22:49:33
Luschi
Hallo Blondie,
beide Prozeduren machen das Selbe, nur auf 2 unterschiedlichen Wegen.
Die 1. Methode funktionierte schon zu Zeiten von Excel 5.0 für Windows 3.1 (1994), als es noch kein Vba gab, sondern eine spezielle länderspezifische Makrossprache. Die 2. Routine sieht etwas vba-Moderner aus.
Gruß von Luschi
aus klein-Paris
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen
Forumthread
Beiträge