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

Excel Screenshot - (PC, Programm, programmieren)

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

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!

Bierkoenig92 
Fragesteller
 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
Bierkoenig92 
Fragesteller
 14.12.2015, 09:59
@Bierkoenig92

Okay weiss warum :) Wegen dem Range(Target.Offset(1, 0).Address & ":" & Target.Offset(1, 0).End(xlDown).Offset(-1, 0).Address)

Ich versuche dass irgendwie umzuschreiben dass er zb besser eins nach rechts und eins nach unten geht und dann xldown .. aber danke dir wirklich ncohmal bis hierher war es der schwerste weg den rest sollte ich hoffentlich hinkriegen :D

1
Iamiam  14.12.2015, 11:34
@Bierkoenig92

Danke für den Stern!

ich sehe (ohne erneutes tief-Eindenken) keine Lösung für dieses Problem, es könnte sein, dass Du mit je einem Leerzeichen in C12:C15 etc was erreichst, dass dann alle drunter ein/ausgeblendet werden. nur Spekulation.

Übrigens: wenn Du in A oberhalb nochmals eine Zeile mit COE einfügst und  in der ersten Leerzeile unterhalb der Gesamtstruktur ein Leerzeichen (oder "ENDE") schreibst und den Bereich .Columns("A:C") nimmst, könnte auch am Anfang nur COE sichtbar sein (müsste beim Anklicken des 2. COE alles ausblenden)

Bist Du übrigens bei U'lever?  Dann schöne Grüße! (kannst ja einen FA stellen!)

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.

Bierkoenig92 
Fragesteller
 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
Iamiam  11.12.2015, 21:35
@Bierkoenig92

stelle grade fest: vermutlich heißt die Eigenschaft nicht

.hidden = true sondern .visible = false

kommt mehrmals vor!

0
Iamiam  11.12.2015, 23:12
@Iamiam

vergiss diese AW, nimm das Sub in der nächsten, das geht!

0