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.



