Anzeige
Archiv - Navigation
1520to1524
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

Per Makro Filter setzen

Per Makro Filter setzen
25.10.2016 08:51:49
onkelbobby
Hallo zusammen,
per Makrorecorder habe ich mir in einer Datei ein funktionierendes Makro eingerichtet, das mir Dateien öffnet, Filter setzt, ausdruckt und die Datei wieder schliesst.
Hintergrund: Für mehrere Gebiete sollen monatlich Daten aus verschiedenen Dateien ausgewertet werden und per pdf-Drucker in eine pdf-Datei pro Gebiet zusammengefügt werden.
Es handelt sich um ca. 10 Exceldateien, die laufend aktualisert werden.
Um nicht im Makro ständig die Daten des Gebiets und Monats auszutauschen würde ich gerne in der Datei festlegen welchen Monat und welches Gebiet ich auswerten möchte.
Die Daten sollen z. B. in Zelle B1 (Gebiet) und B2 (Monat) eingetragen werden und dann das Makro entsprechend für die eingetragenen Daten erzeugt werden (= die Filter in den Excel-Dateien entsprechend gesetzt werden).
Aktuell hat mir der Recorder die Daten so eingetragen:
Beispiel 1:
ActiveSheet.Range("$B$9:$S$54").AutoFilter Field:=2, Criteria1:= _
"Gebiet 1"
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
ActiveWorkbook.Close savechanges:=False
Beispiel 2:
ActiveWorkbook.SlicerCaches("Datenschnitt_Monat").ClearManualFilter
With ActiveWorkbook.SlicerCaches("Datenschnitt_Monat")
.SlicerItems("9").Selected = True
.SlicerItems("1").Selected = False
.SlicerItems("2").Selected = False
.SlicerItems("3").Selected = False
.SlicerItems("4").Selected = False
.SlicerItems("5").Selected = False
.SlicerItems("6").Selected = False
.SlicerItems("7").Selected = False
.SlicerItems("8").Selected = False
.SlicerItems("(Leer)").Selected = False
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
Diese Beispiele tauchen im Makro mehrfach auf (pro Datei) und ich müsste aktuell sehr viel manuell machen.
Wie muss ich die beiden Makros umschreiben um in Abhängigkeit der Zellen B1 und B2 die richtigen Filter zu setzen.
In A1 steht "Gebiet" in B1 eine Zahl von 1 - 15 in A2 "Monat" und in B2 eine Zahl von 1 - 12.
Danke für Eure Hilfe!
Robert

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Per Makro Filter setzen
25.10.2016 10:04:36
UweD
Hallo
Die Zellinhalte kannst du so einbauen.
Was mir unklar ist, wo du die Monatswerte eingibst.
Evtl. solltest du mal eine Musterdatei hochladen.

Sub dgdgd()
With ActiveSheet
If .AutoFilterMode Then .AutoFilterMode = False 'Filter ausschalten
.Range("$B$9:$S$54").AutoFilter Field:=2, _
Criteria1:=.Range("A1") & " " & Range("B1")
ActiveWindow.SelectedSheets.PrintOut Copies:=1, _
Collate:=True, ignorePrintAreas:=False
ActiveWorkbook.Close savechanges:=False
With ActiveWorkbook.SlicerCaches("Datenschnitt_" & .Range("A2"))
.ClearManualFilter
.SlicerItems("9").Selected = True
.SlicerItems("1").Selected = False
.SlicerItems("2").Selected = False
.SlicerItems("3").Selected = False
.SlicerItems("4").Selected = False
.SlicerItems("5").Selected = False
.SlicerItems("6").Selected = False
.SlicerItems("7").Selected = False
.SlicerItems("8").Selected = False
.SlicerItems("(Leer)").Selected = False
End With
ActiveWindow.SelectedSheets.PrintOut Copies:=1, _
Collate:=True, ignorePrintAreas:=False
End With
End Sub
LG UweD
Anzeige
AW: Per Makro Filter setzen
25.10.2016 14:35:04
onkelbobby
Hallo Uwe,
danke für Deine Hilfe!
Leider funktioniert das Makro nicht. Der Filter wird in der Datei zwar gesetzt, jedoch nicht der gewünschte Filterwert gezeigt (das Ergebnis bleibt leer).
Im Anhang habe ich mal zwei Beispieldateien (Pfad der Datei muss noch im Makro entsprechend geändert werden).
Die Filterung des Monats (ist in einer anderen Datei) findet über ein "Datenschnittfenster" einer Pivottabelle statt. Geht das auch mit einem Makro oder sollte ich die Filterung anders gestalten.
Danke für weitere Hilfe!
https://www.herber.de/bbs/user/109011.xlsm
https://www.herber.de/bbs/user/109010.xlsx
Anzeige
AW: Per Makro Filter setzen
25.10.2016 15:08:37
UweD
Hi
Das mit der zweiten Datei habe ich angepasst.
Sub dgdgd()
Dim TB
Set TB = ThisWorkbook.Sheets("Tabelle1")
Workbooks.Open Filename:="C:\Temp\Mappe2.xlsx"
Sheets("Tabelle1").Select
With ActiveSheet
If .AutoFilterMode Then .AutoFilterMode = False 'Filter ausschalten
.Range("$B$9:$S$54").AutoFilter Field:=2, _
Criteria1:=TB.Range("A1") & " " & TB.Range("B1")
End With
End Sub
zwischen Gebiet und der Ziffer steht noch ein Leerzeichen


Teil2 versteh ich nicht. deshalb offen
LG UweD
AW: Per Makro Filter setzen
25.10.2016 15:38:53
onkelbobby
Hallo Uwe,
danke für Deine Unterstützung. Die ersten Filter funktionieren schon mal.
Die Tabellen die ich für die Monate filtern will, sind Pivottabellen. Ich habe dort jeweils über die Pivot-Table-Tools einen "Datenschnitt" eingefügt, um mit einem Klick den gewünschten Monat zu filtern. Wenn ich nun die Filterung per Makro aufnehme wird mir das in unten stehender Form angezeigt:
ActiveWorkbook.SlicerCaches("Datenschnitt_Monat").ClearManualFilter
With ActiveWorkbook.SlicerCaches("Datenschnitt_Monat")
.SlicerItems("9").Selected = True
.SlicerItems("1").Selected = False
.SlicerItems("2").Selected = False
.SlicerItems("3").Selected = False
.SlicerItems("4").Selected = False
.SlicerItems("5").Selected = False
.SlicerItems("6").Selected = False
.SlicerItems("7").Selected = False
.SlicerItems("8").Selected = False
.SlicerItems("(Leer)").Selected = False
End With
Wie kann ich hier in B2 den Monat angeben (z. B. "9") damit mir der entsprechende Monat angezeigt wird. Es müssten ja praktisch der Wert von 9 auf True und alle anderen auf False gesetzt werden. Oder gibts hier einen ganz anderen Ansatz?
Anzeige

23 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige