Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

VBA - Zeilen einblenden/ ausblenden, wenn Bedingung erfüllt
#1
Hallo zusammen, ich sitze nun schon eine ganze Weile an der Programmierung von Makros, doch ich komme nicht voran.
Folgende Situation ist gegeben:
Von Zeile 15 bis 238 habe ich untereinander 9 Tabellen aufgelistet. Jede Tabelle stellt ein anderes Land dar. Von Zeile 242 bis 465 sind genau die selben Tabellen aufgelistet. Im Feld A6 habe ich eine DropDownListe eingefügt. Wählt man nun hier ein Land aus, so soll nur das jeweilige Land aus dem Abschnitt 15:238 erscheinen. Das habe ich soweit hinbekommen. Nun möchte ich aber ein Land mit einem anderen vergleichen. Dazu habe ich eine weitere DropDownListe im Feld A9 hinzugefügt. Wähle ich hier ein Land aus, so soll das jeweilige Land aus dem Zeilenabschnitt 242:465 angezeigt werden. Dies bekomm ich allerdings nicht hin. Lediglich die Länder des ersten Zeilenabschnitts werden aktualisiert, die des zweiten nicht. Ich hoffe mir kann jemand weiter helfen. Meine bisherige Programmierung lautet:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
   With Tabelle1
      If .Range("A6").Text = "Global" Then 'DropDownZelle natürlich anpassen
         .Rows("40:238").EntireRow.Hidden = True
      Else
         .Rows("40:238").EntireRow.Hidden = False
         With Tabelle1
            If .Range("A6").Text = "Deutschland/ Österreich/ Schweiz" Then 'DropDownZelle natürlich anpassen
               .Rows("15:38").EntireRow.Hidden = True
               .Rows("65:238").EntireRow.Hidden = True
            Else
               .Rows("15:38").EntireRow.Hidden = False
               .Rows("65:238").EntireRow.Hidden = False
               With Tabelle1
                  If .Range("A6").Text = "Frankreich" Then 'DropDownZelle natürlich anpassen
                     .Rows("15:63").EntireRow.Hidden = True
                     .Rows("90:238").EntireRow.Hidden = True
                  Else
                     .Rows("15:63").EntireRow.Hidden = False
                     .Rows("90:238").EntireRow.Hidden = False
                     With Tabelle1
                        If .Range("A6").Text = "Großbritanien" Then 'DropDownZelle natürlich anpassen
                           .Rows("15:88").EntireRow.Hidden = True
                           .Rows("115:238").EntireRow.Hidden = True
                        Else
                           .Rows("15:88").EntireRow.Hidden = False
                           .Rows("115:238").EntireRow.Hidden = False
                           With Tabelle1
                              If .Range("A6").Text = "Spanien" Then 'DropDownZelle natürlich anpassen
                                 .Rows("15:113").EntireRow.Hidden = True
                                 .Rows("140:238").EntireRow.Hidden = True
                              Else
                                 .Rows("15:113").EntireRow.Hidden = False
                                 .Rows("140:238").EntireRow.Hidden = False
                                 With Tabelle1
                                    If .Range("A6").Text = "Italien" Then 'DropDownZelle natürlich anpassen
                                       .Rows("15:138").EntireRow.Hidden = True
                                       .Rows("165:238").EntireRow.Hidden = True
                                    Else
                                       .Rows("15:138").EntireRow.Hidden = False
                                       .Rows("165:238").EntireRow.Hidden = False
                                       With Tabelle1
                                          If .Range("A6").Text = "USA" Then 'DropDownZelle natürlich anpassen
                                             .Rows("15:163").EntireRow.Hidden = True
                                             .Rows("190:238").EntireRow.Hidden = True
                                          Else
                                             .Rows("15:163").EntireRow.Hidden = False
                                             .Rows("190:238").EntireRow.Hidden = False
                                             With Tabelle1
                                                If .Range("A6").Text = "China" Then 'DropDownZelle natürlich anpassen
                                                   .Rows("15:188").EntireRow.Hidden = True
                                                   .Rows("215:238").EntireRow.Hidden = True
                                                Else
                                                   .Rows("15:188").EntireRow.Hidden = False
                                                   .Rows("215:238").EntireRow.Hidden = False
                                                   With Tabelle1
                                                      If .Range("A6").Text = "Türkei" Then 'DropDownZelle natürlich anpassen
                                                         .Rows("15:213").EntireRow.Hidden = True
                                                      Else
                                                         .Rows("15:213").EntireRow.Hidden = False
                                                         With Tabelle1
                                                            If .Range("A9").Text = "Global" Then 'DropDownZelle natürlich anpassen
                                                               .Rows("267:465").EntireRow.Hidden = True
                                                            Else
                                                               .Rows("267:265").EntireRow.Hidden = False
                                                               With Tabelle1
                                                                  If .Range("A9").Text = "Deutschland/ Österreich/ Schweiz" Then 'DropDownZelle natürlich anpassen
                                                                     .Rows("242:265").EntireRow.Hidden = True
                                                                     .Rows("292:465").EntireRow.Hidden = True
                                                                  Else
                                                                     .Rows("242:265").EntireRow.Hidden = False
                                                                     .Rows("292:465").EntireRow.Hidden = False
                                                                     With Tabelle1
                                                                        If .Range("A9").Text = "Frankreich" Then 'DropDownZelle natürlich anpassen
                                                                           .Rows("242:290").EntireRow.Hidden = True
                                                                           .Rows("317:465").EntireRow.Hidden = True
                                                                        Else
                                                                           .Rows("242:290").EntireRow.Hidden = False
                                                                           .Rows("317:465").EntireRow.Hidden = False
                                                                           With Tabelle1
                                                                              If .Range("A9").Text = "Großbritanien" Then 'DropDownZelle natürlich anpassen
                                                                                 .Rows("242:315").EntireRow.Hidden = True
                                                                                 .Rows("342:465").EntireRow.Hidden = True
                                                                              Else
                                                                                 .Rows("242:315").EntireRow.Hidden = False
                                                                                 .Rows("342:465").EntireRow.Hidden = False
                                                                                 With Tabelle1
                                                                                    If .Range("A9").Text = "Spanien" Then 'DropDownZelle natürlich anpassen
                                                                                       .Rows("242:340").EntireRow.Hidden = True
                                                                                       .Rows("367:465").EntireRow.Hidden = True
                                                                                    Else
                                                                                       .Rows("242:340").EntireRow.Hidden = False
                                                                                       .Rows("367:465").EntireRow.Hidden = False
                                                                                       With Tabelle1
                                                                                          If .Range("A9").Text = "Italien" Then 'DropDownZelle natürlich anpassen
                                                                                             .Rows("242:365").EntireRow.Hidden = True
                                                                                             .Rows("392:465").EntireRow.Hidden = True
                                                                                          Else
                                                                                             .Rows("242:365").EntireRow.Hidden = False
                                                                                             .Rows("392:465").EntireRow.Hidden = False
                                                                                             With Tabelle1
                                                                                                If .Range("A9").Text = "USA" Then 'DropDownZelle natürlich anpassen
                                                                                                   .Rows("242:390").EntireRow.Hidden = True
                                                                                                   .Rows("417:465").EntireRow.Hidden = True
                                                                                                Else
                                                                                                   .Rows("242:390").EntireRow.Hidden = False
                                                                                                   .Rows("417:465").EntireRow.Hidden = False
                                                                                                   With Tabelle1
                                                                                                      If .Range("A9").Text = "China" Then 'DropDownZelle natürlich anpassen
                                                                                                         .Rows("242:415").EntireRow.Hidden = True
                                                                                                         .Rows("442:465").EntireRow.Hidden = True
                                                                                                      Else
                                                                                                         .Rows("242:415").EntireRow.Hidden = False
                                                                                                         .Rows("442:465").EntireRow.Hidden = False
                                                                                                         With Tabelle1
                                                                                                            If .Range("A9").Text = "Türkei" Then 'DropDownZelle natürlich anpassen
                                                                                                               .Rows("242:440").EntireRow.Hidden = True
                                                                                                               .Rows("442:465").EntireRow.Hidden = True
                                                                                                            Else
                                                                                                               .Rows("242:440").EntireRow.Hidden = False
                                                                                                               .Rows("442:465").EntireRow.Hidden = False
                                                                                                            End If
                                                                                                         End With
                                                                                                      End If
                                                                                                   End With
                                                                                                End If
                                                                                             End With
                                                                                          End If
                                                                                       End With
                                                                                    End If
                                                                                 End With
                                                                              End If
                                                                           End With
                                                                        End If
                                                                     End With
                                                                  End If
                                                               End With
                                                            End If
                                                         End With
                                                      End If
                                                   End With
                                                End If
                                             End With
                                          End If
                                       End With
                                    End If
                                 End With
                              End If
                           End With
                        End If
                     End With
                  End If
               End With
            End If
         End With
      End If
   End With
End Sub
Antworten Top
#2
Hallo,

wenn Du uns eine Beispieldatei einstellst, dann kann das Ganze sicher mit ein paar Zeilen Code gelöst werden.
Du kannst alle Daten löschen nur die Tabellenbereiche und Ländernamen sollten ersichtlich sein.
Dann sollte auch erkennbar sein, wie Dein Dropdown aussieht und woher es die Daten bezieht.
Gruß Atilla
Antworten Top
#3
Moin!
Da es immer ein Zeilensprung von 25 ist, dürfte man das (natürlich ungetestet) mit einem Einzeiler verwursten, der den Listindex des ActiveX-Dropdowns auswertet.

Ergänzend:
Der TE hat Datenüberprüfung, Liste in A6 und A9.
Sicherlich auch relativ problemlos umsetzbar.
Aber: siehe Atilla, Beispieldatei!

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#4
Hallo Atilla.

Hier ist die Datei. Natürlich musste ich die Daten entfernen, da diese vertraulich sind. Es geht mir aber ja auch nur um das ein- und ausblenden der Zeilen. Vielen Dank schon mal im voraus :)


Angehängte Dateien
.xlsm   Dashbord mit Makro.xlsm (Größe: 177,82 KB / Downloads: 8)
Antworten Top
#5
Hallo Ralf,

habe ich auch zuerst gedacht.
Aber dann sah ich, dass mehrere Länder im gleichen Bereich liegen:


Code:
       If .Range("A6").Text = "Deutschland/ Österreich/ Schweiz" Then 'DropDownZelle natürlich anpassen
       .Rows("15:38").EntireRow.Hidden = True
       .Rows("65:238").EntireRow.Hidden = True
       Else
       .Rows("15:38").EntireRow.Hidden = False
       .Rows("65:238").EntireRow.Hidden = False

deshalb, würde ich gerne sehen, wie die Dropdownliste aussieht.
Vielleicht kann man sie ja auch gleich mit verwursten.

Du siehst, ich denke mir manchmal etwas dabei, wenn ich denke. :92:
Gruß Atilla
Antworten Top
#6
Die Länder Deutschland/ Österreich/ Schweiz gelten als ein Land :)
Antworten Top
#7
Wenn Du eine Zusatzspalte Ort einfügst, reicht ein simpler Autofilter.
Leerzeilen haben in einer Liste nichts zu suchen.

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
Antworten Top
#8
Danke für den Hinweis. Ich wollte das jetzt aber nach diesem Prinzip so weiter machen.
Mich wundert es halt, dass es für den ersten Zeilenabschnitt (also in Bezug auf die DropDownListe in Zelle A6) funktioniert, in Bezug auf die Zelle A9 aber nicht...
Antworten Top
#9
Hallo,

ich blicke jetzt nicht mehr ganz durch, was wann ein oder ausgeblendet werden soll (zumal hier Frankreich und nicht England alles durcheinander bringt  Blush ). Ich würde die Zeilenangaben gegebenenfalls in der Tabelle Länder hinter den Länder angeben und von da ablesen.

Aber generell sollte man hier nicht das Selection_Change sondern das Change Ereiegnis nehmen.
Der Ablauf ist einfacher zu händeln, wenn immer alle Zeilen ausgeblendet und nach Auswagl die zugehörigen Zeilen eingeblendet werden.
Gruß Atilla
Antworten Top
#10
Also nochmal:

Ist in der DropDownListe bei Zelle A6 "Global" ausgewählt, dann sollen die Zeilen 40 - 238 verschwinden.
Ist in der DropDownListe bei Zelle A6 "Deutschland/ Österreich/ Schweiz" ausgewählt, dann sollen die Zeilen 15 - 38 und 65 - 238 verschwinden.
Ist in der DropDownListe bei Zelle A6 "Frankreich" ausgewählt, dann sollen die Zeilen 15 - 63 und 90 - 238 verschwinden.
Ist in der DropDownListe bei Zelle A6 "Großbritanien" ausgewählt, dann sollen die Zeilen 15 - 88 und 115 - 238 verschwinden.
Ist in der DropDownListe bei Zelle A6 "Spanien" ausgewählt, dann sollen die Zeilen 15 - 113 und 140 - 238 verschwinden.
Ist in der DropDownListe bei Zelle A6 "Italien" ausgewählt, dann sollen die Zeilen 15 - 138 und 165 - 238 verschwinden.
Ist in der DropDownListe bei Zelle A6 "USA" ausgewählt, dann sollen die Zeilen 15 - 163 und 190 - 238 verschwinden.
Ist in der DropDownListe bei Zelle A6 "China" ausgewählt, dann sollen die Zeilen 15 - 188 und 215 - 238 verschwinden.
Ist in der DropDownListe bei Zelle A6 "Türkei" ausgewählt, dann sollen die Zeilen 15 - 213 verschwinden.

Ist in der DropDownListe bei Zelle A9 "Global" ausgewählt, dann sollen die Zeilen 267 - 465 verschwinden.
Ist in der DropDownListe bei Zelle A9 "Deutschland/ Österreich/ Schweiz" ausgewählt, dann sollen die Zeilen 242 - 265 und 292 - 465 verschwinden.
Ist in der DropDownListe bei Zelle A9 "Frankreich" ausgewählt, dann sollen die Zeilen 242 - 290 und 317 - 465 verschwinden.
Ist in der DropDownListe bei Zelle A9 "Großbritanien" ausgewählt, dann sollen die Zeilen 242 - 315 und 342 - 465 verschwinden.
Ist in der DropDownListe bei Zelle A9 "Spanien" ausgewählt, dann sollen die Zeilen 242 - 340 und 367 - 465 verschwinden.
Ist in der DropDownListe bei Zelle A9 "Italien" ausgewählt, dann sollen die Zeilen 242 - 365 und 392 - 465 verschwinden.
Ist in der DropDownListe bei Zelle A9 "USA" ausgewählt, dann sollen die Zeilen 242 - 390 und 417 - 465 verschwinden.
Ist in der DropDownListe bei Zelle A9 "China" ausgewählt, dann sollen die Zeilen 242 - 415 und 442 - 465 verschwinden.
Ist in der DropDownListe bei Zelle A9 "Türkei" ausgewählt, dann sollen die Zeilen 242 - 440 verschwinden.

Der Sinn dahinter:

Man kann zwei Länder auswählen und diese unmittelbar miteinander vergleichen.


Besser kann ich es jetzt auch nicht mehr erklären :)
Antworten Top


Gehe zu:


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