Excel Makro zeilen ein/ausblenden mit klick

Aquado

Lt. Junior Grade
Registriert
Dez. 2011
Beiträge
458
Hallo zusammen,

ich hätte gerne ein Makro in EXCEL, welches mir beim klick in eine Zelle weitere Spalten einblendet und wein weiterer klick diese Zeilen wieder ausblendet.

Konkret sieht das in etwa so aus.

In einer spalte ist das Tool gelistet(mehrere zeilen verbunden), die spalten daneben geben auskunft über die Version.
Nun würde es reichen, wenn man im normalzustand nur die letzte Zeile (mit dem aktuell verwendeten Version) sieht.
Ein klick gibt dann praktisch die versionshistorie frei.

ex1.PNG
Zustand 1 (normal zustand)

ex2.PNG
Zustand nach einem Klick

Sollte jemand eine Idee haben wie das umzusetzten ist wäre ich dankbar.

Gruß
 
Hallo,

versuche es doch mal über den Makrorekorder, dann solltest du schon mal einen guten Anfang haben. Den Rekorder findest du in den Entwicklertools, die du vorher in den Optionen aktivieren musst.

Abgesehen davon, könntest du auch Gruppieren, dann wäre es noch einfacher und ohne Makro machbar.
 
Hallo,
danke für die antwort.
Gruppieren ist Optisch einfach keine schöne Sache, wäre möglich aber eher als Notlösung.
Makrorekorder ebenfalls schon ausprobiert. allerdings klappt das ausklappen nur, wenn ich die Spalten vorher markiere. das hilft als nur bedingt weiter.
 
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
    Dim bStatus As Boolean
    Dim wsCurrent As Worksheet
    
    Set wsCurrent = Target.Parent
    bStatus = Not wsCurrent.Range("H:J").Columns.Hidden
    
    If Target.Address = "$A$2" Then
        wsCurrent.Range("H:J").Columns.Hidden = bStatus
    End If
End Sub

In das Worksheet deiner Wahl einfügen :)
Sollte so grob tun was du willst. Das Problem ist, dass man eine Zelle nicht 2x hintereinander aktivieren kann. Das heißt wenn du die Spalten dann wieder einblenden willst, musst du erst eine andere Zelle aktivieren, bevor du die "Triggerzelle" wieder aktivieren kannst.
 
:-) schon mal tausend Dank.

leider stell ich mich wohl gerade wie der letzte trottel an, aber wenn ich mit ALT+f11 in das Menü gehe und den code in das WS kopiere (ws rechtsklick -> code anzeigen ), die betreffende Zelle anpass und speichere tut sich nichts.

Habe ich was vergessen?

Gruß
 
Hi,
also ich hab einfach nur eine neue Excel-Datei geöffnet und diese als *.xlsm Datei gespeichert.
Vielleicht musst du noch Makros aktivieren?
Ansonsten sieht das bei mir so aus:

Unbenannt1.JPG

Hilft das?

Edit: wichtig ist, dass der Sub genau so heißt sonst funktioniert das nicht mit dem Event abfangen...
 
Mir ist da eine andere Umsachltmöglichkeit in Erinnerung.

Allerdings wir mir schwummrig wenn ich bei jedem Klick in eine Zelle die Spalten ein- und ausblende. Leider ist Excel, salopp, etwas blöd, man erwartet wohl eher echte Klickelemente wie «Checkboxen» (Häkchen) oder m.E. nach viel besser Doppelklicks!

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 If Target.Row = 2 And Target.Column = 3 Then
  Application.ScreenUpdating = False 'ggf. überflüssig
  Application.EnableEvents = False '"zwingend" nötig
    Columns("R:T").EntireColumn.Hidden = Not (Columns("R:T").EntireColumn.Hidden)
  Range("C1").Select
  Application.EnableEvents = True
  Application.ScreenUpdating = True
 End If
End Sub
Damit habe ich Zelle C2 scharfgemacht. Knackpunkt: ich muss eine andere, hier C1, selektieren damit ich umgehend (!) wieder die Spalten R Bis T schalten kann.

Bemühen wir den Doppeklick reicht simpelst:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
 If Target.Row = 2 And Target.Column = 3 Then
  Columns("R:T").EntireColumn.Hidden = Not (Columns("R:T").EntireColumn.Hidden)
  Cancel = True
 End If
End Sub
…selbstverständlich immer noch mit dem Gedanken nicht überall im Blatt herumklicken zu dürfen.

Das Not() vollführt eine Kugelschreiberfunktion ganz ohne Variablen und anderem mehr.

CN8
 
CN8 absolut klasse Lösung. Das mit dem NOT "Umschalter" ist einfach cool. Da wäre ich im Leben nicht drauf gekommen. Hatte ich doch irgendwas mit if then gebastelt :-/
 
Genial, funktioniert exact wie gewünscht. :)

vielen Dank für die Hilfe.

Gruß
 
Zurück
Oben