Excel Gruppierung mit Makro anlegen?
Hallo,
ich erstelle gerade einen Projektplan und würde gerne ein Makro einbinden das ein Untergruppierung für eine Zelle einbindet wenn ich die Zelle anklicke.
z.B. ich klicke Zelle B22 an und es wird eine neue Zeile darunter mit "Plus" Gruppierung angelegt.
VG
2 Antworten
Probier das hier:
Sub einfuegen_gruppieren()
Selection.Offset(1, 0).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Offset(1, 0).Rows.Group
End Sub
Weißt du, wie du das Makro in Excel bekommst?
Der Code sollte so in jeder Zelle funktionieren. Du kopierst den Code in ein VBA Modul und rufst ihn auf über Entwicklertools->Makros. Dort kannst du auch einen Hotkey zuweisen (Makro auswählen und "Optionen"). Jedesmal, wenn der Code aufgerufen wird, wird in der Zeile darunter eine neue Zeile eingefügt und gruppiert, auch vor 21 und in jeder Spalte. Könnte man noch modifizieren wenn gewünscht.
Dann musst Du daraus ein Ereignismakro machen:
Klicke mit Rechts auf den Tabellenreiter (unten, wo z.B. Tabelle1 steht).
Dann "Code anzeigen"
In den VBA-Editor, der sich dann öffnet, kopierst Du diesen Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, Range("B21:B10000")) Is Nothing Then
Selection.Offset(1, 0).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
Selection.Offset(1, 0).Rows.Group
End If
End Sub
Klappt es?
Ergänzung zu Oubyi: Dann wird das bei JEDEM Klick in eine Zelle ab Zeile 21 aufgerufen. Falls das gewünscht ist, geht es genauso wie er schreibt.
So hatte ich das "wenn ich die Zellen in Spalte B beginnend ab Zeile 21 anklicke" verstanden.
Alternativ - und vielleicht in der Praxis besser anwendbar, wäre die Ausführung bei einem Doppelklick in die Zelle:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
...
oder bei einem Rechtsklick:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
...
Bei beiden ggf. noch ein
Cancel = True
vor dem End If anhängen.
An sich funktionert es schon super, aber ich glaube ich habe mich auf sehr undeutliche ausgerückt.
Ich würde gerne nur bestimmte Zellen ab der B21 anklicken wollen und dann mit einem erneuten Klick die Gruppierung wieder schließen.
Ich klicke B21 an. Gruppierung öffnet sich und beim erneuten Klick schließt sie wieder.
Ich klicke B29 an. Gruppierung öffnet sich und beim erneuten Klick schließt sie wieder.
Ich verstehe dich immernoch nicht ganz glaube ich.
Wann genau soll eine neue Zeile eingefügt werden? Soll immer die darunterliegende Gruppierung geöffnet und anschließend wieder geschlossen werden? Hast du vielleicht einen Screenshot oder kannst genauer beschreiben wie die Tabelle aufgebaut ist? Willst du einen Zeitplan machen und dann die detaillierteren Aktivitäten aufklappen? Was ist der Mehrnutzen zu dem Pluszeichen am Rand, warum klickst du nicht einfach darauf?
Oh sind viele Fragen geworden... nimm sie nur als Orientierung und beschreibe etwas genauer was du vorhast ;-)
@EmWald
Ich stelle mir die Gruppierung so vor, nur um die Verwirrung der Kollegen mit dem Plus Zeichen gering zu halten, würde ich gerne ein Makro auslösen per "Doppelklick" auf den Punkt "Projektleitung" und beim erneuten Klick eine Schließung.
Weiter gehts dann im Punkt "Konzepterstellung" mit gleichem Prinzip usw..
Ich entschuldige mich nochmal für die mega Verwirrung die ich ausgelöst habe...

Hat sich erledigt :) Ich habs rausgefunden:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Target.EntireRow.ShowDetail = Not Target.EntireRow.ShowDetail
Cancel = True
End Sub
in den Gliederugnseinstellung muss man nur noch den Haken bei 'Hauptzeilen unter Detaildaten' rausnehmen.
Vielen Dank euch allen!
Danke für die Hilfe. Wie ich es rein bekomme weiß ich, mir fällt nur kein passender Code ein. Kannst du mir noch mit der Zellenzuweisung weiterhelfen? Der Code solltet dann funktionieren wenn ich die Zellen in Spalte B beginnend ab Zeile 21 anklicke