Im zweiten und abschliessenden Teil dieser Beitragsserie sehen wir uns die Funktionsweise des Makros zur automatischen Gruppierung und Ebeneneinrückung im Detail an.
Der VBA-Code ist sehr einfach aufgebaut:
Sub Automatische_Ebenen_Gruppierung() Dim RowMin As Variant Dim RowCount As Integer Dim RowNo As Integer Dim LevelCurrent As Integer Dim LevelMax As Variant Dim ColumnIndent As Variant Dim ColumnLevelinfo As Variant RowCount = ActiveSheet.UsedRange.Rows.Count On Error Resume Next RowMin = Application.InputBox("Wählen Sie die erste zu gruppierende Zeile aus:", "Automatische Gruppierung starten", Type:=1): If RowMin = "" Then Exit Sub LevelMax = Application.InputBox("Wählen Sie die maximale vorkommende Ebenenanzahl:", "Automatische Gruppierung starten", Type:=1): If LevelMax = "" Then Exit Sub ColumnLevelinfo = Application.InputBox("Wählen Sie die Spalte mit der Ebenen-Information:", "Automatische Gruppierung starten", Type:=2): If ColumnLevelinfo = "" Then Exit Sub ColumnIndent = Application.InputBox("Wählen Sie die Spalte mit den einzurückenden Ebenen-Texten:", "Automatische Gruppierung starten", Type:=2): If ColumnIndent = "" Then Exit Sub For LevelCurrent = LevelMax To 2 Step -1 For RowNo = RowMin To RowCount If Range(ColumnLevelinfo & RowNo) >= LevelCurrent Then Rows(RowNo & ":" & RowNo).Group Range(ColumnIndent & RowNo).IndentLevel = Range(ColumnLevelinfo & RowNo) End If Next RowNo Next LevelCurrent End Sub
Nach der Abfrage der vier Eingabeparameter werden in der äusseren Schleife die - in unserem Fall vier - Ebenen von der tiefsten bis zur zweiten (=vorletzten) Ebene durchlaufen. In der inneren Schleife werden alle Zeilen des relevanten Bereichs durchlaufen und so lange gruppiert bis die Ebeneninformation einer Zeile kleiner ist als die aktuelle Ebene aus der äusseren Schleife die gerade durchlaufen wird. Auf diese Weise werden die Gruppierungen und das Einrücken bewerkstelligt.