440 Aufrufe
Gefragt in Tabellenkalkulation von sheep225 Einsteiger_in (86 Punkte)
Hallo liebe Foriker,

ich habe folgende Aufgabenstellung: ich habe eine Artikelliste mit 5 Blättern; Spalte A (Artikelnummer) ist in allen Blättern gleich, bzw. ich verweise mit  [='Artikelliste Basis'!Ax]  in Blatt 2-5 auf die Spalte A in Blatt 1.

Die weiteren Spalten unterscheiden sich von Blatt zu Blatt.

In Blatt 1 habe ich Autofilter gesetzt; nun möchte ich erreichen, dass ein Filter in Blatt 1 auch eine Filterung der anderen Tabellenblätter bewirkt. Beispielsweise habe ich in Blatt 1 / Spalte H ein Kriterium, das nur für einige Artikelnummern zutrifft (x); filtere ich nun Spalte H nach x, dann sind in Spalte A ja nur diejenigen Artikelnummern zu sehen, für welche das x zutrifft.

Wie kann ich nun (automatisiert) erreichen, dass die Blätter 2-5 auf Grund der Ausgabe in Blatt 1 / Spalte A gefiltert werden? Die Funktion sollte natürlich für jeden Filter im Blatt 1 nutzbar sein...

Ich hoffe ich habe mich einigermassen verständlich ausgedrückt...

Vielen Dank für jegliche Hilfe

14 Antworten

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)
ausgewählt von sheep225
 
Beste Antwort

Hi,

ändere diesen Teil:

        For lngTab = 2 To 4
            With Worksheets(lngTab)
                If .AutoFilterMode Then
                    .AutoFilter.ShowAllData
                End If
                .Range(rngFilter.Address).Rows.EntireRow.Hidden = False
                .Range(rngGefiltert.Address).Rows.EntireRow.Hidden = True
            End With
        Next lngTab

Der Code gehört übrigens in ein Standardmodul.

https://supportnet.de/forum/?qa=blob&qa_blobid=1182775991293474293

Bis später, Karin

0 Punkte
Beantwortet von sheep225 Einsteiger_in (86 Punkte)
Hallo Karin,

ja, nun klappt das so wie ich mir das vorgestellt habe!

Vielen Dank für deine Unterstützung und Geduld!

Gruss Daniel
0 Punkte
Beantwortet von sheep225 Einsteiger_in (86 Punkte)
Hallo zusammen,

die Lösung von Karin war schon ganz toll und hilft mir sehr; nun möchte ich den Thread aber nochmal aufmachen, denn ich möchte noch zwei Ergänzungen einbauen:

1) aktuell funktioniert der Code ja nur, wenn im Tabellenblatt 1 ein Autofilter aktiviert wird. Könnte man den Code so umbauen, dass er mit einem (oder sogar mehreren Filtern) in jedem beliebigen Tabellenblatt funktioniert?

2) wie müsste ein Makro aussehen, welches alle ausgeblendeten Zeilen wieder einblendet und auch den Autofilter deaktiviert?

Vielen Dank für Eure Hilfe!
Daniel

@ Admin: hoffe das ist ok wenn ich den Thread wieder aufmache, ansonsten bitte verschieben...
0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi,

ich verstehe nicht ganz wo dein Problem ist, denn mit diesem Teil

                If .AutoFilterMode Then
                    .AutoFilter.ShowAllData
                End If

werden alle Filter zurückgesetzt und mit dieser Codezeile

                .Range(rngFilter.Address).Rows.EntireRow.Hidden = False

werden alle anderweitig (also vorher per Code) ausgeblendeten Zeilen wieder eingeblendet, ehe dann mit dieser Codezeile

                .Range(rngGefiltert.Address).Rows.EntireRow.Hidden = True

die neuen Zeilen ausgblendet werden.

Bis später, Karin

...