Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1504to1508
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

In Arbeitsmappe alle Autofilter aktualisieren?

In Arbeitsmappe alle Autofilter aktualisieren?
04.08.2016 16:31:11
choffi
Ich habe für verschiedene Tabellen Autofilter definiert, in denen zum Beispiel Klassen gefiltert werden.
Die Tabellen sind auf verschiedenen Arbeitsblätter verteilt aber alle in der gleichen Arbeitsmappe.
Gibt es ein VBA oder Makro mit dem man einfach die bestehende Anzeige der Autofilter aktualisieren kann? Die Autofilter wurden mal eingestellt und stimmen so. Aber eben, wenn die Ausgangsdaten ändern wird die Anzeige der Filter nicht aktualisiert.
Ich bin wirklich froh, wenn ich da einen Hinweis bekommen könnte. Sonst muss ich alle Filter öffnen und neu speichern und dies halt mit den Recorder aufnehmen.
Aber vielleicht weiss jemand da Abhilfe.

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: In Arbeitsmappe alle Autofilter aktualisieren?
04.08.2016 17:19:58
Michael
Hallo Choffi!
Du bist gehst etwas spärlich mit Angaben um, wie Deine konkreten Verhältnisse aussehen - da kann man auch schwer Empfehlungen abgeben. In Excel generell, aber v.a. auch mit dem AutoFilter, führen oft viele Wege nach Rom - aber eben nicht in der selben Zeit und Qualität ;-).
Eine Möglichkeit, die evtl. schon ausreichen/funktionieren *kann*, wäre Folgendes:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Ws As Worksheet
For Each Ws In Me.Worksheets
If Ws.AutoFilterMode = True Then
Ws.AutoFilter.ApplyFilter
End If
Next Ws
End Sub
Das muss ins Code-Modul der Mappe (Alt + F11, im VBE dann DoKlick auf DieseArbeitsmappe, dort einfügen).
LG
Michael
Anzeige
AW: In Arbeitsmappe alle Autofilter aktualisieren?
05.08.2016 09:01:08
choffi
Vielen Dank. Ich versuchte nun dieses aufzurufen so passiert folgendes:
Dieser Code mit Alt+F11 und mit DK in "Diese Arbeistmappe" eingefügt und gespeichert.

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Ws As Worksheet
For Each Ws In Me.Worksheets
If Ws.AutoFilterMode = True Then
Ws.AutoFilter.ApplyFilter
End If
Next Ws
End Sub
Dann habe ich ein Makro erstellt und in diesem Makro folgenden Code eingegeben:

Sub AktAllFil()
Call [DieseArbeitsmappe].Workbook_SheetChange
End Sub
Wenn ich nun diesen Code aufrufe über das Makro "AktAllFil" kommt der folgende Fehler:
"Fehler beim Kompilieren:
Methode oder Datenobjekt nicht gefunden"
und im Makro ist der folgende Bereich markiert
"Call [DieseArbeitsmappe].Workbook_SheetChange"
Offensichtlich ist mein Aufruf falsch. Auch wenn ich "DieseArbeitsmappe" weg lasse kommt der gleiche Fehler.
Anzeige
Was machst Du denn da...
05.08.2016 09:18:53
Michael
Choffi?!?!
Aber daran bin ich nicht unschuldig, ich hätte aufmerksamer Deine Level-Angabe "VBA nur mit Recorder" lesen sollen.
Meinen Code musst Du nicht mehr aufrufen, das ist ein sogenanntes Ereignis-Makro. D.h. mein Code reagiert immer dann, wenn in der Arbeitsmappe, in der er hinterlegt ist, auf irgendeinem Blatt eine Zelländerung durchgeführt wird. Wenn dem so ist, also das Makro ausgelöst wird, dann schaut das Makro alle Tabellenblätter der Mappe durch, und in jedem Blatt, das sich im AutoFilter-Modus befindet, wird der jeweilige AutoFilter (so wie eingestellt) angewendet, und damit aktualisiert.
Aber wenn ich jetzt so lese, was Du mit meinem Mini-Code aufführst, denke ich ist es vielleicht ratsam, dass Du uns eine Beispielmappe hier einstellst und auch konkret aufführst, was sich wo in der Mappe ändert, dass dann die AutoFilter aktualisieren soll - wie ich bereits geschrieben habe: zeig Deine konkreten Verhältnisse! Dann bekommst Du auch passenden Code, den Du dann nicht selbst solange anpassen musst, bis er nicht mehr funktioniert ;-).
LG
Michael
Anzeige
AW: Was machst Du denn da...
05.08.2016 13:58:11
choffi
Vielen Dank für die Erklärung.
Das ist eigentlich im Grunde was ich möchte, dass wenn immer die Daten geändert werden, auch automatisch die Anzeige nachgeführt wird.
Ich habe es mal ausprobiert. Es ist richtig, dass dieses Makro die Anzeige des Filters aktualisiert. Aber nun einen Wert anzeigt, der eigentlich ausgefiltert werden müsste. Aber vielleicht habe ich es falsch formuliert, entschuldige. Natürlich sollte der Filter auch neu ausgeführt werden und dadurch die Anzeige richtig stellen.
Es ist eine Tabelle aus einer Schule mit vielen Namen drin. Und wenn da ein Schüler von einer Klasse zurückversetzt wird, so müssen natürlich die Filter neu ausgeführt werden, so dass der Schüler wieder in der richtigen Klasse erscheint.
Aus Datenschutzgründen ist es ein wenig schwierig die Tabelle öffentlich zu machen. Und für einen Dummy brauche ich ein wenig Zeit.
Anzeige
Bastel mal eine Bsp-Mappe, ich hab Zeit...
05.08.2016 14:06:44
Michael
Choffi,
...und dann schauen wir uns das nochmal an.
Aus Datenschutzgründen ist es ein wenig schwierig die Tabelle öffentlich zu machen
Das ist klar und völlig verständlich, und so geht es vermutlich jedem hier - niemand von den Helfern verlangt von Dir Originaldaten. Aber wir wollen sehen wie Dein Tabellen-/Datenaufbau aussieht, was die Ausgangsituation ist, und was Du Dir vorstellst (Ziel) - Letzteres kannst Du ja einmal manuell einrichten, damit es klar wird.
Und ob Schule oder nicht - hier stellt auch ständig jemand Fragen im Firmenkontext... Uns ist es egal ob da ein echter Kundenname steht oder ein Dummy "ABCD GmbH" - genauso muss ich nicht wissen wie Deine Schüler heißen. Ein paar Bsp-Datensätze á la "Max Muster", "Tom Test", "Paula Probe" reichen mir da prinzipiell.
Also - bau mal ein kleines Bsp-Gerüst, und dann schau ich gerne nochmal rein. Wichtig wäre mir, dass erkennbar ist: WAS gibt es schon, WAS änderst Du und WAS soll dann passieren.
LG und schönes Wochenende
Michael
Anzeige
AW: Bastel mal eine Bsp-Mappe, ich hab Zeit...
05.08.2016 22:22:07
choffi
So nun habe ich mal eine Arbeitsmappe soweit zusammen gestrichen, dass man da kein Datenschutzproblem bekommen sollte.
Als erstes habe ich das "Datenmodell" gezeichnet. Das LehrerOffice ist ein Programm wo man Prüfungen verwalten kann, Noten berechnen, Zeugnisse ausdrucken, Stoffplan erstellen, Lektionen plannen. Darin werden die Daten der Eltern, der Schüler und der Lehrer erfasst. Aus diesem heraus können drei Dateien gezogen werden. Alle in Textform, welche in Excel importiert werden, um die eigenen Auswertungen erstellen zu können.
Userbild
Nun wollte ich die frisierte Excel Datei hochladen, aber da die Grenze bei 330 kB ist, geht das nicht.
Wüsste nun nicht, was ich da alles noch rauslöschen müsste, um die Grösse von 1.7M auf 300 KB zu reduzieren...
Anzeige
AW: Bastel mal eine Bsp-Mappe, ich hab Zeit...
06.08.2016 07:54:07
choffi
So ich habe mal weiter aus der Arbeitsmappe gelöscht bis fast zur Unkenntlichkeit. Ohne Erfolg. Nun so habe ich die Tabelle letztendlich als XLS anstelle XLSX gespeichert. Nun hoffe ich nur, man kommt noch draus...
https://www.herber.de/bbs/user/107425.xls
Sorry, aber...
08.08.2016 09:44:19
Michael
Hallo Choffi,
...was genau soll ich aus dieser Bsp-Mappe jetzt entnehmen? Du hast Dir offenbar viel Mühe gegeben, aber was Du jetzt genau benötigst, weiß ich davon immer noch nicht.
Ich sehe hier zwei Tabellenblätter, eines mit den Daten und eines mit einer formatierten Tabelle (Liste), was etwas anderes ist als ein AutoFilter. Ich sehe keine (gesetzten) AutoFilter, ich weiß noch immer nicht was sich wo ändert und dann eine Aktualisierung eines AutoFilters anstoßen soll...
So kann ich nicht helfen, weil ich nicht mal sehe wo ein Problem besteht.
LG
Michael
Anzeige
AW: Sorry, aber...
08.08.2016 10:14:26
choffi
Das tut mir leid.
Also im Arbeitsblatt Klassenliste Unterstufe sollte in der Tabelle Klassenliste ein Filter bei Klasse gesetzt sein. Z.B. 1. Kindergarten. Wenn nun im Arbeitsblatt die Daten aus dem LehrerOffice geändert werden, z. B. ein Schüler zurück versetzt wird, so sollte das Resultat aktualisiert werden. Das heisst der Schüler fällt aus der Liste. Jetzt wird nur die Klasse geändert.
AW: Bastel mal eine Bsp-Mappe, ich hab Zeit...
07.08.2016 15:05:40
choffi
Hallo Michael, ich weiss nicht ob du es bemerkt hast, aber ich habe die Beisp. Datei erstellt und hochgeladen.
Bin am Wochenende nie im Forum, ich schau mir...
08.08.2016 09:39:22
Michael
Hallo Choffi,
...Deine Bsp-Datei heute mal an.
LG
Michael
AW: Bin am Wochenende nie im Forum, ich schau mir...
08.08.2016 09:42:09
choffi
Freue mich und vielen Dank.
Einfach zum Verständnis. Diese eine Auswertung gibt es nun in vielen verschiedenen Kombinationen für die verschiedensten Bedürfnisse.
Dein VBA-Lösungsvorschlag wäre eigentlich genau das was ich suche, nur eben sollte er nicht nur die Anzeige erneuern, sondern die Filter neu ausführend aktualisieren.
Anzeige
AW: Bin am Wochenende nie im Forum, ich schau mir...
08.08.2016 10:37:56
choffi
"Das heisst der Schüler fällt aus der Liste. Jetzt wird nur die Klasse geändert."
Sollte heissen: Jetzt wird nur der bestehende Klassenname geändert aber nicht die Zuteilung neu erstellt.
Okay, ich hab mir das nochmal angesehen...
08.08.2016 15:02:40
Michael
Choffi,
...und frage mich: Warum arbeitest Du nicht mit PivotTabellen? So wie ich es verstanden habe, beruht Dein "Datenmodell" auf Systemexporten. Damit füllst Du Dir gewisse Tabellenblätter mit Daten (im Beispiel "Datengrundlage_Lernende" - aber es gibt offenbar noch mehr). Warum verknüpfst Du diese Daten über Formeln aufwändig in neuen Blättern, nur um dann dort mit diversen Filtern herumzuhantieren?
Richte Dir die Datenblätter ein (wenn möglich mit automatisiertem Datenabruf aus den Systemen, oder aber manuell aktualisieren), vergib auf die jeweiligen Datentabellen dynamischen Bereichsnamen (um Vergrößerungen/Verkleinerungen der Daten abzudecken) und richte Dir dann PivotTabellen auf die benannten Bereich ein. In den PivotTabellen kannst Du dann jeweils einen Berichtsfilter nach Klassen, Schulstufe oder was weiß ich setzen und musst nur die jeweilige PivotTabelle manuell aktualisieren, wenn Du eine neue Auswertung machen willst; notfalls ließe sich das auch mit VBA automatisieren.
Mehr helfen kann ich an der Stelle nicht, aus bereits genannten Gründen.
LG
Michael
Anzeige
AW: Okay, ich hab mir das nochmal angesehen...
08.08.2016 15:41:33
choffi
Danke Michael für deine Hilfe.
Weisst du diese verschiedensten Auswertungen sind alle vorbereitet und können dann schön formatiert durch das Sekretariat aus dem Excel ausgedruckt werden. Müssen also nicht immer wieder aus einem Pivot aufbereitet werden.
Zudem sind pro Blatt zwei bis drei Auswertungen drauf. So werde ich halt weiter um eine Lösung suchen.
Eine Frage habe ich noch: Warum wird bei diesem Code:
           Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim Ws As Worksheet
For Each Ws In Me.Worksheets
If Ws.AutoFilterMode = True Then
Ws.AutoFilter.ApplyFilter
End If
Next Ws
End Sub
Nur die Anzeige wird erneuert und nicht der Filte neu ausgeführt? Gäbe es nicht einen Befehl, der den Filte neu ausführt? Beim obigen Code, bleibt der Eintrag in der gefilterten Tabelle stehen, obwohl der geänderte Zellinhalt aktualisiert wird. Somit bleibt nach einer Änderung z.B. in der Tabelle 1. Kindergarten der Schüler welcher in den 2. Kindergarten geändert wurde stehen. 2. Kindergarten wird richtig neu angezeigt. Aber dieser Schüler hätte in der Liste des 1. Kindergarten nichts mehr zu suchen.
OK, das mag alles sein und...
08.08.2016 16:21:27
Michael
Hi,
Auswertungen sind alle vorbereitet und können dann schön formatiert durch das Sekretariat
...ist ja auch verständlich.
So werde ich halt weiter um eine Lösung suchen.
Und ich würde Dir gerne weiterhelfen, aber Du hilfst *mir* leider nicht dabei ;-), denn...
nicht einen Befehl, der den Filter neu ausführt
Jaja, aber welchen Filter denn? Wie gesagt, Deine Bsp-Mappe ist nett, aber nicht wirklich hilfreich, weil sie weder den gewünschten Filter enthielt noch Hinweise darauf.
Nur die Anzeige wird erneuert und nicht der Filter neu ausgeführt?
Kann ich so schwer beantworten, weil... ich Deine Datei bzw. Deine Ausgangssituation und Ziel nicht kenne.
LG
Michael
AW: OK, das mag alles sein und...
08.08.2016 17:03:30
choffi
Ok. Ich habe nun die Tabelle im Arbeitsblatt "Klassenliste Unterstufe" noch einmal erstellt. Und habe bei Klasse einen Filter gesetzt auf 1.Kindergarten.
Auch habe ich dein Makro wie instruiert im VBA Editor unter diese Arbeitsmappe eingefügt.
https://www.herber.de/bbs/user/107476.xls
Wenn ich nun auf dem Arbeitsblatt "Datengrundlage_Lernende" in der Zelle CH3 anstelle 1. Kindergarten 2. Kindergarten schreibe, so wird mir auf dem Arbeitsblatt Klassenliste Unterstufe die Anzeige der Tabelle aktualisiert. Aber das Kriterium 2. Kindergarten dürfte gar nicht angezeigt werden, weil ich ja vorher nur 1. Kindergarten gesetzt hatte. Wenn ich den Filter dann öffne, so ist auch nur der Hacken bei 1. Kindergarten gesetzt.
Wie kann man dieses Verhalten beseitigen?
Jetzt weiß ich, worauf Du hinaus willst...
09.08.2016 09:43:38
Michael
Guten Morgen Choffi,
...und muss Dir sagen: Das ist nicht so trivial umzusetzen. Mein bisheriger Code reicht dafür nicht aus bzw. ist dafür ungeeignet. Warum? Wenn im Filter-Blatt bereits ein Filter gesetzt ist, und Du im Datenblatt Änderungen vornimmst, kann es bei Deiner Struktur passieren, dass UNgefilterte (!) Datensätze auf dem Filterblatt plötzlich Werte enthalten, die den jeweiligen Datensatz eigentlich als gefilterten (!) Datensatz klassifizieren müssten - das passiert aber nicht, weil der Filter nicht ständig im Hintergrund mitläuft und prüft, ob noch alle Datensätze den Filterkriterien entsprechen oder nicht.
Das lässt sich nur so "umgehen" bzw. lösen: Bei jeder manuellen (!) Änderung in den Daten, müssen ALLE Filter (Du hast, so wie ich das sehe, nämlich mehrere auf dem Blatt, da formatierte Tabellen eingesetzt werden) auf dem oder den Auswertungsblatt/-blättern zuerst entfernt werden und dann wieder in ihrer ursprünglichen Form gesetzt werden. Die Filtereinstellungen/-Kriterien müssten man dann fest in den Code schreiben; wenn die Kriterien zuvor ausgelesen werden sollen, zwischengespeichert, und nach dem Entfernen des alten Filters wieder gesetzt werden sollen, dann wird's richtig knackig.
Ist wahrscheinlich machbar, aber... So wie Deine Datei aussieht, kann das ein sehr, sehr großes Unterfangen werden, ich bin mir nicht mal sicher ob sich in dieser Struktur der Aufwand lohnen würde, oder ob nicht der gesamte Aufbau neu zu definieren wäre - dann könnte man evtl. auch mit Spezialfiltern arbeiten, und die Kriterien auf einem Blatt definieren usw. usf. ... Aus meiner Sicht schon eine Nummer zu groß für's Forum.
LG
Michael
AW: Jetzt weiß ich, worauf Du hinaus willst...
09.08.2016 11:42:21
choffi
Danke Michael
Danke für deine Antwort. Nun werde ich es wieder so machen, wie auf einer anderen Tabelle. Von Hand die Filter ausführen und gleichzeitig aufzeichnen. Das geht gut und kann dann als Makro immer wieder manuell laufen gelassen werden, oder vielleicht durch dein Makro automatisch angestossen werden.
Vielen Dank für deine Geduld und Unterstützung.
OK, viel Erfolg noch! LG und owT
09.08.2016 12:29:17
Michael

18 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige