AW: Gliederung anhand Ebenen Nummer
10.01.2012 08:36:31
fcs
Hallo Gerd,
hier mein Vorschlag als Makro-Lösung.
Gruß
Franz
'##############################################################
'# Windows Vista - Excel 2007 - VBA 6.5.1053 #
'# fcs 2012-01-10 #
'# Modul: Allgemeines Modul #
'# Zeilen abhängig von Zellinhalt einblenden #
'# Makros sollten auch unter Excel 2003 lauffähig sein #
Private varEbene
Sub EbenenEinblenden()
'Beschreibung
'Deklaration von Variablen
Dim wks As Worksheet, rngAusblenden As Range, lngZeile As Long
Dim StatusCalc As Long
On Error GoTo Fehler
Set wks = ActiveSheet
With wks
If varEbene = Application.WorksheetFunction.Max(.Columns(1)) Then varEbene = 0
varEbene = Val(InputBox("Höchste anzuzeigende Ebene:", "Ebenen aublenden", varEbene + 1))
If varEbene = 0 Then Goto Fehler
'Makrobremsen lösen
With Application
.EnableEvents = False
StatusCalc = .Application.Calculation
.Calculation = xlCalculationManual
.ScreenUpdating = False
End With
.Rows.Hidden = False
Set rngAusblenden = Nothing
For lngZeile = 2 To .Cells(.Rows.Count, 1).End(xlUp).Row
If .Cells(lngZeile, 1) > varEbene Then
If rngAusblenden Is Nothing Then
Set rngAusblenden = .Cells(lngZeile, 1)
Else
Set rngAusblenden = Application.Union(rngAusblenden, .Cells(lngZeile, 1))
End If
End If
Next
End With
If Not rngAusblenden Is Nothing Then
rngAusblenden.EntireRow.Hidden = True
End If
'Fehlerbehandlung
Err.Clear
Fehler:
With Err
Select Case .Number
Case 0 'kein Fehler
Case Else
MsgBox "Fehler-Nr.: " & .Number & vbLf & .Description
End Select
End With
'Makrobremsen zurücksetzen
With Application
.EnableEvents = True
.Calculation = StatusCalc
.ScreenUpdating = True
End With
'Variablen aufräumen
Set wks = Nothing: Set rngAusblenden = Nothing 'Objektvariablen zurücksetzen
End Sub