Organigram Excel mit einklappen und ausklappen (per Makro?)?
Hallo Zusammen,
etwas komplizierteres Problem hier: (zumindest bin ich nach stundenlangem Googeln auf englisch und deutsch auf kein akzeptables ergebis gekommen)
Im Prinzip klingt es einfach: Ich will ein Organigramm erstellen per Excel (Word wuerde auch noch gehen, keine sonstige Freeware da ich im Buero keine Software runterladen kann/darf). Nun will ich aber kein "statisches" Organigram (zb per SmartArt). Es soll eher so etwas sein wo ich auf einen Namen klicke und dann alle untergeordneten Leute/Mitarbeiter aufklappen (NUR DIE VON DEM JEWEILIGEN "BOSS").
Mit Gruppieren etc. komme ich nicht vorran da ich 1. will dass es per Mausklick auf den namen geht und 2. ich nicht mehr als 8 untergruppen erstellen kann damit.
Am liebsten auch ein Makro dass ich anpassen koennte ?Hab hier noch ein Bild was vllt etwas besser erklaert was ich meine.
Zum Bild:Ich will dann quasi dass am Anfang nur "CEO" da steht. Dann klicke ich zb auf "C" dann poppen 1,2,3,4,5 auf und ich klicke auf "1" dann poppen 11,12,13 auf etc.. der rest soll am besten verborgen bleiben (viel uebersichtlicher)
Hoffe, dass war einigermassen gut erklaert. Bei Fragen etc einfach nachfragen...Ich finde dazu leider auch wirklich nirgends etwas (ausser irgendwelcher Freeware etc.) Aber es MUSS doch moeglich sein?
Danke euch vieeelmals schonmal!!!
EDIT:
hab jetzt mal probiert einen Makro zu schreiben:
Sub collapse()
Selection.Offset(1, 1).Select
Range(Selection, Selection.End(xlDown)).
Select Selection.EntireRow.Hidden = True
End Sub
_______
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
If Target.Column = 2 Then
Target.Select
Call collapse
End If
If Target.Address = "$B$10" Then
Target.Select
Call collapse
End If
End Sub
____
Problem: Wenn ich es mit "target.column" mache (was mir lieber ist) dann wuerde ich gerne haben dass er bei leeren zellen nichts macht in dieser spalte... wie geht das genau? und hat einer eine ahnung wie ich das hinkrieg dass wenn ich WIEDER auf die gleiche zelle gehe er mir des rueckgaengig macht? Ich hab so eine ahnugn mit true/false denke ich mal aber habe keine ahnung wie ich das umsetzen kann..
Also irgendwie dass wenn ich einmal draufdruecke und des eingeklappt ist er weiss visibile = false oder sowas und wenn ich wieder draufdruecke soll er halt true machen versteht ihr mich :D?

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!
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
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!)
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.
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 :)
stelle grade fest: vermutlich heißt die Eigenschaft nicht
.hidden = true sondern .visible = false
kommt mehrmals vor!
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!!!!