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 Autofilter für mehrere Tabellenblätter übernehmen
#1
Grüß euch wieder mal  Blush

Ich hab ein neues Problem bzw möchte wieder was optimieren.

In meinem Excel File gibt es viele Tabellenblätter, die prinzipiell gleich aufgebaut sind.
Ich würde jetzt gerne in Tabelle A einen Autofilter setzen (meistens Datum/Woche in Spalte C) und dieser soll dann für die gewissen anderen Tabellen übernommen werden.

Aktuell hab ich mir zumindest mal soweit die Sachen zusammengesucht und angepasst:
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i As Long
If Target.Address <> "$A$1" Then Exit Sub 'nur bei Doppelklick auf A1

With Application 'Makro beschleunigen
        .ScreenUpdating = False
        .EnableEvents = False
        .Calculation = xlCalculationManual
End With

With Sheets("A").AutoFilter.Filters 'Autofilter von Tabelle A übernehmen
    For i = 1 To .Count
        With .Item(i)
            If .On Then
                On Error Resume Next
                Me.Cells(1, 1).AutoFilter Field:=i, Criteria1:=.Criteria1
                Me.Cells(1, 1).AutoFilter Field:=i, Criteria1:=.Criteria1, _
                                                    Operator:=.Operator
                Me.Cells(1, 1).AutoFilter Field:=i, Criteria1:=.Criteria1, _
                                                    Criteria2:=.Criteria2, _
                                                    Operator:=.Operator
                On Error GoTo 0
            Else
                Me.Cells(1, 1).AutoFilter Field:=i
            End If
       
        End With
    Next
End With

ActiveWindow.FreezePanes = False 'Fenster G2 fixieren
Range("G2").Select
ActiveWindow.FreezePanes = True
Range("F1").Select 'F1 auswählen

With Application 'Makro beschleunigen Ende
        .ScreenUpdating = True
        .EnableEvents = True
        .Calculation = xlCalculationAutomatic
End With
End Sub

Diesen Code hab ich bei den relevanten Tabellen (im Beispiel B/C/E) eingefügt und funktioniert relativ gut.
Ein Problem gibt es jedoch, sobald man beim Datum z.B. 2019 oder einzelne Tage auswählt.
Dann wird die Abfrage durchgeführt, jedoch kein Filter gesetzt.
Jemand eine Idee, wie man dieses Array (denke ich mal  Blush ) noch zusätzlich abfragen und setzen kann?


Bzgl Optimierung:
Ich würde gerne den Filter in der Tabelle A setzen, das Makro laufen lassen und dann die bestimmten Tabellen gleich filtern.
Wäre nochmal schneller, einmal die notwendigen Filter setzen zu lassen, als bei jeder Tabelle das Makro extra auszuführen.
Hoffe einer kann mich hier wieder unterstützen.

Danke
Hohle


Angehängte Dateien
.xlsm   Beispiel.xlsm (Größe: 134,57 KB / Downloads: 4)
Antwortento top
#2
Hallo,

wieder einmal die Frage, warum diese Daten auf mehrere Tabellenblätter verteilt sind.
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antwortento top
#3
Hallo Klaus-Dieter,

jedes Tabellenblatt wird für einen separaten Bereich für tägliche Eingaben genutzt.
Das Beispiel ist natürlich starkt gekürzt, im richtigen File geht es bis zur Spalte CK.

Ich benötige jeden Tag bis zu 8 Tabellenblätter für die verschiedenen Bereiche.
Antwortento top
#4
Hallo,

um es noch mal ganz deutlich auszudrücken: es gibt keinen vernünftigen Grund gleichartige Daten auf mehreren Tabellenblättern zu halten und zu pflegen. Das erhöht den Aufwand und bringt keine Vorteile. Ein Tabellenblatt hat rund eine Million Zeilen, das reicht für ganz viele Daten(sätze).
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antwortento top
#5
Hallo,

klar, man könnte über eine Hilfsspalte die einzelnen Bereiche trennen, das Datum dementsprechend oft eingeben usw.
So hätte ich ca 8.000 Zeilen und alle Daten auf einem Blatt.
Leider hab ich das File nur übernommen und kann es aktuell und auch nicht in naher Zukunft komplett neu erstellen.

Wie geschrieben, ich würde gerne die vorhandenen Sachen etwas optimieren, damit ich mir etwas Zeit erspare.
Man muss nicht immer die Gründe komplett verstehen, um trotzdem helfen zu können  Blush
Ich frage mich auch oft, warum jemand etwas so und so haben will, gib ihm einen Tipp wie es mMn sinnvoller wäre und hilf dann bei der Umsetzung (egal wie er sich entscheidet).
Antwortento top
#6
gelöscht wegen richtige Antwort im falschen Beitrag.  Angry Vielen Dank für den Hinweis.   28
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Antwortento top
#7
Hi @Klaus-Dieter

du hast den TE verwechselt.

Zum TE.
Der Datumsfilter lässt sich nicht auslesen und damit auch nicht übertragen.

Gruß Elex
Antwortento top
#8
Hallo,

der Datumsfilter funktioniert, wenn man die vorgefertigten Filtermöglichkeiten nutzt (Gestern/ Dieser Monat/ Zwischen).
Nur sobald man direkt unten die Tage/Monate anklickt oder in der Suche eingibt, funktioniert es nicht ;)
Das wär ein kleines Add on, wenn das auch noch funktionieren würde, wird aber von mir nicht unbedingt benötigt.


Die Übernahme des Filters des A Blattes auf die gewissen anderen wäre noch hilfreich.
Sollte es nicht funktionieren, werde ich das Makro wie im Beispiel integrieren.
Ist zwar nicht perfekt, aber schon eine Erleichterung für mich  19
Antwortento top


Gehe zu:


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