Organigram Excel mit einklappen und ausklappen (per Makro?)?

... komplette Frage anzeigen

2 Antworten

ich habs gottseidank nochmal selbst ausprobiert: war voller Fehler, hättest Du wahrscheinlich nie zum Laufen gekriegt. (.hidden hätte übrigens doch gestimmt!)

So läuft es bei mir:

Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim c

If Not Intersect(Target, Columns("B:C")) Is Nothing Then

Application.Calculation = xlCalculationManual

If Target.Offset(1, 0).EntireRow.Hidden = True Then

For Each c In Range(Target.Offset(1, 0).Address & ":" & Target.Offset(1, 0).End(xlDown).Offset(-1, 0).Address)

c.EntireRow.Hidden = False

Next

Else

For Each c In Range(Target.Offset(1, 0).Address & ":" & Target.Offset(1, 0).End(xlDown).Offset(-1, 0).Address)

c.EntireRow.Hidden = True

Next

End If

Application.Calculation = xlCalculationAutomatic

End If

End Sub

Allerdings erscheint mir die Range mit 2x Address etwas umständlich, aber im Moment sehe ich die wahrscheinlich vorhandene bessere Lösung nicht und ich mag jetzt nicht mehr..

Viel Erfolg!

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Bierkoenig92
14.12.2015, 09:50

Danke dir viiielmals wirklich! Das klappt genau so wie ich es wollte.. Mir faellt nur auf dass wenn ich bei A auf "1" klicke (also zelle c3) dass dann 2&3 verschwinden.. weisst du eventuell warum?
Das gleiche passiert auch bei zb. C "2" dann verschwinden 3&4..

Ansonsten perfekt danke dir wirklich nochmals!!!!

0

Wenn am Anfang nur CEO dasteht, kannst du nicht auf C klicken. A, B, C... müssen zum Draufklicken schon sichtbar sein.

ich versuch das jetzt mal als Trockenübung, also ohne Korrektur der Syntax:

ins Modul des Arbeitsblatts folgenden Code:

Sub Worksheet_Change(Byval Target as Range)

If not intersect(Target, Columns("B:C") is nothing then

if Target.offset(1, 0).row.hidden = true then

Range(Target.offset(1, 0)&":"&Target.offset(1, 0).end(xldown).offset(-1, 0)).entirerow.hidden = false

else

Range(Target.offset(1, 0)&":"&Target.offset(1, 0).end(xldown).offset(-1, 0)).rows.hidden = true

end if

end if

end sub

Das hier sollte auch noch für eine weitere Stufe (Column C, erweiterbar auf zB B:F) funktionieren. Immer auf die Boss-Zelle klicken. Du kannst so unabhängig voneinander mehrere Abteilungen darstellen (aufklappen). Ggf noch eine Zusätzliche Prüfung, ob die Zelle was enthält  mit if isempty(Target)  Then Range(Target.offset(1, 0).end(xlup).offset(1, 0) bis Target.offset(1, 0).end(xldown).offset(-1, 0)) ausblenden (zum Einblenden ja nicht nötig, weil man die leeren ja vorher nicht sieht/anklicken kann)

Könnte sein, dass es mal nur .row braucht, mal .entirerow, weiß ich auch erst nach ausprobieren.

Um da drin was zu schreiben/korrigieren, musst Du aber erst das Makro deaktivieren" (zB auskommentieren oder einfach einen zweiten _ dazu, dann erkennt xl das nicht mehr als Auto-ausführen-Makro. Kannst natürlivj auch eine Zelle bestimmen, die vorher abgeprüft wird, in der zB 1 oder schreiben steht.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Bierkoenig92
11.12.2015, 21:30

Danke dir vieeelmals! ich probier es am Montag direkt im Geschäft! Natürlich geb ich bescheid obs klappt oder nicht aber sieht schonmal für einen Anfänger wie mich auf den ersten blick so aus als wäre es genau das was ich gesucht hatte :)

1