Excel Gruppierung mit Makro anlegen?

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?


Pak91 
Beitragsersteller
 09.01.2019, 12:50

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

0
EmWald  09.01.2019, 13:57
@Pak91

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.

0
Oubyi, UserMod Light  09.01.2019, 14:07
@Pak91

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?

2
EmWald  09.01.2019, 14:09
@Oubyi, UserMod Light

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.

0
Oubyi, UserMod Light  09.01.2019, 14:18
@EmWald

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.

2
Pak91 
Beitragsersteller
 09.01.2019, 14:33
@EmWald

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.

0
EmWald  09.01.2019, 14:45
@Pak91

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 ;-)

2
Pak91 
Beitragsersteller
 09.01.2019, 14:55
@EmWald

Habe eine neue Antwort mit Screenshot angefügt.. Sorry vielmals!!!

0

@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.

Bild zum Beitrag

Weiter gehts dann im Punkt "Konzepterstellung" mit gleichem Prinzip usw..

Ich entschuldige mich nochmal für die mega Verwirrung die ich ausgelöst habe...

 - (Computer, programmieren, Microsoft Excel)

Pak91 
Beitragsersteller
 09.01.2019, 15:40

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!

2
EmWald  09.01.2019, 16:08
@Pak91

Alles klar, danke für die Rückmeldung und gutes Gelingen :-)

1
EmWald  09.01.2019, 19:33
@EmWald

Ich hätte gedacht, es wäre komplizierter, da z.b. in deinem Screenshot 2 leere Zeilen da stehen. Aber wenn es klappt ist super. Wenn nicht, bitte nicht zögern, dich wieder zu melden ;-)

1