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

VBA - Gruppierung

Forumthread: VBA - Gruppierung

VBA - Gruppierung
e-mo
Hallo alle zusammen,
kann mir einer Helfen, ein Macro zu erstellen, was die Spalten gruppiert?
Habe folgende Datei hochgeladen, und so sieht die Struktur auch ungefähr aus.
Möchte gerne die Spalten (also horizontal) per Monatszeitraum Gruppieren.
Im Moment ist die Tabelle für August Gruppiert, nun soll es für September gruppiert werden...und im nächsten Monat, Oktober.....November...Dezember...dann wieder von vorne....und dass ca. für 20 Tabs...
Wir stellen immer dar: Aktueller Monat - 1, daher sind im Moment der Bereich für August sichtbar.
Danke schonmal vorab,
Gruss,
e-mo
https://www.herber.de/bbs/user/76708.xlsx
Anzeige

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

Betreff
Benutzer
Anzeige
AW: VBA - Gruppierung
21.09.2011 12:23:58
fcs
Hallo e-mo,
hier mein Vorschlag.
Gruß
Franz

Sub GruppierenNeu()
Dim wks As Worksheet
Dim lngSpalte As Long
Dim Datum1 As Date, Datum2 As Date
'Datum des Vormonats
Datum2 = DateSerial(Year(Date), Month(Date), 1) - 1
Datum2 = DateSerial(Year(Datum2), Month(Datum2), 1)
'Datum des Vormonats im Vorjahr
Datum1 = DateSerial(Year(Datum2) - 1, Month(Datum2), 1)
Application.ScreenUpdating = False
For Each wks In ActiveWorkbook.Worksheets
Select Case wks.Name
Case "Tabelle XYZ", "Tabelle ABC"
'Diese Tabellen nicht Gruppieren
Case Else
With wks
.Columns.Ungroup
.Columns.Hidden = False
For lngSpalte = 1 To .Cells(2, .Columns.Count).End(xlToLeft).Column
Select Case lngSpalte
Case 1 To 6
'nicht gruppieren
Case 7 To 30 'G - AD
If .Cells(2, lngSpalte)  Datum2 Then
.Columns(lngSpalte).Group
End If
Case 32 To 81 'AG - CC
If .Cells(2, lngSpalte) = Datum2 Then
.Columns(lngSpalte).ColumnWidth = 16
Else
.Columns(lngSpalte).ColumnWidth = 6.43
.Columns(lngSpalte).Group
End If
Case 84 To 95 'CF-CQ
If .Cells(2, lngSpalte) = Datum1 Then
.Columns(lngSpalte).ColumnWidth = 12
Else
.Columns(lngSpalte).ColumnWidth = 6.43
.Columns(lngSpalte).Group
End If
Case 96 To 107 'CR-DC
If .Cells(2, lngSpalte) = Datum2 Then
.Columns(lngSpalte).ColumnWidth = 12
Else
.Columns(lngSpalte).ColumnWidth = 6.43
.Columns(lngSpalte).Group
End If
Case 31, 57, 82, 83 'Spalten AE,BE,CD,CE
.Columns(lngSpalte).Group
Case Else
'do nothing
End Select
Next lngSpalte
End With
End Select
wks.Outline.ShowLevels RowLevels:=0, ColumnLevels:=1
Next
Application.ScreenUpdating = True
End Sub

Anzeige
AW: VBA - Gruppierung
21.09.2011 15:33:59
e-mo
Hi Franz....
dachte du bist auf der IAA....habe schon nicht damit gerechnet, dass du mir antwortest :-)
werde das heute abend gleich mal ausprobieren.
Wie wärst auf ein Bier? :-)
Gruss,
e-mo
;

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