Per Dropdown-Liste Spalten ausblenden
#1
Hallo zusammen!

Ich habe ein Dokument, indem ich in einer Tabelle 4 Grafiken habe und in der anderen 2 Dropdown-Listen mit je 2 Optionen.

Am Beispiel erläutert:
Grafik 1A
Grafik 1B
Grafik 2A
Grafik 2B

Dropdownliste 1:
1
2

Dropdownliste 2:
A
B


Jetzt möchte ich je nach Auswahl auf der einen Tabelle per Makro 3 der 4 Grafiken ausblenden und nur die eine selektierte anzeigen

Bis vor kurzem hatte ich nur 2 Grafiken, da hat mein Code super funktioniert, habe diesen jetzt auf 4 Grafiken erweitern wollen, jetzt tut sich allerdings gar nicht mehr.
Hier ist der Code:


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("$F$13") Then
Select Case Target.Value
Case Is = "Einspurbetrieb "
 If Target = Range("$F$15") Then
 Select Case Target.Value
 Case Is = "SES"
  Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
  Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = False
  Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = True
  Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = True
 Case Is = "LES"
  Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
  Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = False
  Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = True
  Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = True
 Case Is = ""
  Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = False
  Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = True
  Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = False
  Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = True
 End Select
 End If
Case Is = "Zweispurbetrieb"
 If Target = Range("$F$15") Then
 Select Case Target.Value
 Case Is = "SES"
  Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
  Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = True
  Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = True
  Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = False
 Case Is = "LES"
  Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
  Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = False
  Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = True
  Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = True
 Case Is = "-"
  Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
  Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = Flase
  Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = True
  Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = False
 End Select
 End If
 
Case Is = ""
 If Target = Range("$F$15") Then
 Select Case Target.Value
 Case Is = "SES"
  Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
  Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = True
  Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = False
  Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = False
 Case Is = "LES"
  Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = False
  Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = False
  Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = True
  Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = True
 Case Is = "-"
  Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = False
  Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = False
  Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = False
  Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = False
 End Select
 End If
 
 
End Select
End If


End Sub



Vielleicht sieht ja jemand sofort wo das Problem steckt? Oder kann es auch sein, dass ich aus Versehen die Makros auf dem Tabellenblatt deaktiviert habe?


Vielen Dank schonmal für eure Hilfe, Beispieltabelle kann ich morgen hochladen wenn sie benötigt wird.
Antworten Top
#2
Hallo,

ich weise darauf hin das am Ende von "Einspurbetrieb " noch ein Leerzeichen steht. Gehçrt das da hin???  Wenn Nein bitte löschen!
Dann gibt es bei Target ö.E. einen logischen Denkfehler. Die Eingabe kann nicht gleichzeitig in Zelle F13 + F15 erfolgen. Die Case Auswertung kann bei doppeltem Auswerten von zwei verschiewdenen Zellen so nicht funktionieren. Probier mal den geaenderten Code. Ich konnte ihn nicht richtig testen!

mfg  Gast 123 

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("$F$15") Then

If Range("$F$13") = "Einspurbetrieb " Then
Select Case Target.Value
Case Is = "SES"
 Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
 Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = False
 Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = True
 Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = True
Case Is = "LES"
 Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
 Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = False
 Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = True
 Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = True
Case Is = ""
 Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = False
 Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = True
 Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = False
 Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = True
End Select
End If

If Range("$F$13") = "Zweispurbetrieb" Then
Select Case Target.Value
Case Is = "SES"
 Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
 Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = True
 Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = True
 Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = False
Case Is = "LES"
 Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
 Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = False
 Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = True
 Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = True
Case Is = "-"
 Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
 Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = Flase
 Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = True
 Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = False
End Select
End If
 
If Range("$F$13") = Empty Then
Select Case Target.Value
Case Is = "SES"
 Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
 Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = True
 Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = False
 Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = False
Case Is = "LES"
 Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = False
 Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = False
 Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = True
 Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = True
Case Is = "-"
 Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = False
 Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = False
 Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = False
 Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = False
End Select
End If

End If
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Gast 123 für diesen Beitrag:
  • Dubsepp
Antworten Top
#3
Hallo Gast 123!

Erstmal danke für den Code! Funktioniert grundsätzlich sehr gut und tut im Grunde was er soll.

Das Problem ist allerdings, dass er erst aktualisiert, wenn ich zwischen "LES" und "SES" hin und her schalte. Wechsle ich nur von "Einspurbetrieb" auf "Zweispurbetrieb" aktualisiert sich in der Tabelle nichts. Er springt wohl nur bei einer Änderung von F15 in den Code zur Abfrage.

Hab das zwischenzeitlich ähnlich (viel uneleganter) mit 3 If Abfragen unter dem jeweiligen Case auch so hingebogen. Stehe hier aber vor dem selben Problem.

Gibt es die Möglichkeit, die Aktualisierung mit einem "Generate"-Button z.b. zu starten?

EDIT: Das Leerzeichen hat zwischenzeitlich da hingehört ja Wink war damals so in den Code vertieft, dass ich die Dropdownliste nicht aktualisieren wollte. In der hatte ich das Leerzeichen mit drin aus Versehen.
Antworten Top
#4
Hallo

Sorry, kleiner Schöheitsfehler von mir:   Korriegere bitte mal die erste Anweisung so:   dann sollte es klappen. Würde mich freuen.
If Target = Range("$F$13") Or Target = Range("$F$15") Then

mfg  Gast 123
Antworten Top
#5
(09.11.2016, 13:06)Gast 123 schrieb: Hallo

Sorry, kleiner Schöheitsfehler von mir:   Korriegere bitte mal die erste Anweisung so:   dann sollte es klappen. Würde mich freuen.
If Target = Range("$F$13") Or Target = Range("$F$15") Then

mfg  Gast 123

Hallo!

Danke, das war die Lösung für das Problem! Musste nur noch eine Kleinigkeit an deinem Code ändern für den Select Case, da ich ja so nicht mehr mit dem Target .Value arbeiten kann, da davon dann 2 belegt sein können. Hab also das "Select Case Target.Value" durch "Select Case Range("$F$15").Value" ersetzt und alles funktioniert wie gewünscht.

Hier der fertige Code, falls andere auch ein Problem damit haben.

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target = Range("$F$15") Or Target = Range("$F$13") Then

If Range("$F$13") = "Einspurbetrieb" Then
Select Case Range("$F$15").Value
Case Is = "SES"
Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = False
Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = True
Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = True
Case Is = "LES"
Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = True
Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = False
Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = True
Case Is = "-"
Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = False
Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = True
Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = False
Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = True
End Select
End If

If Range("$F$13") = "Zweispurbetrieb" Then
Select Case Range("$F$15").Value
Case Is = "SES"
Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = True
Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = True
Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = False
Case Is = "LES"
Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = False
Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = True
Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = True
Case Is = "-"
Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = Flase
Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = True
Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = False
End Select
End If

If Range("$F$13") = "-" Then
Select Case Range("$F$15").Value
Case Is = "SES"
Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = True
Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = True
Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = False
Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = False
Case Is = "LES"
Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = False
Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = False
Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = True
Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = True
Case Is = "-"
Worksheets("Fahrgassengeometrie L1200S").Rows("11:35").Hidden = False
Worksheets("Fahrgassengeometrie L1200S").Rows("38:62").Hidden = False
Worksheets("Fahrgassengeometrie L1200S").Rows("68:96").Hidden = False
Worksheets("Fahrgassengeometrie L1200S").Rows("100:130").Hidden = False
End Select
End If

End If
End Sub
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste