Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1360to1364
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

filterweitergabe per loop zum auslösen makro

filterweitergabe per loop zum auslösen makro
28.05.2014 18:51:49
Frank
Hallo zusammen,
ich hab folgendes problem:
Ausgangssituation ist folgende ich habe eine große Tabelle, die in einem anderen Tabellenblatt diverse Auswahlfilter mit hinterlegten Listen per Gültigkeit mit definiertem Namen manuell ausgewählt werden. Diese Filter werden dann über ein Makro ausgelöst und kopieren den Inhalt aus diversen Spalten gefiltert nach den Eingaben im Tabellenblatt weiter in eine neue Arbeitsmappe und speichern diese über ein im Tabellen hinterlegten Namen ab. Das Funktioniert auch soweit alles ganz gut, ausser das es ziemlich langsam ist, und das Resultat von der Formatierung her nicht gut aussieht und die Dateien riesig werden weil immer ALLE Zeilen kopiert werden.
Das aber bei Seite, mein Problem ist jetzt, dass ich eine Auswahlliste generiere und über diese sämtliche hinterlegten Filterkriterien jeweils ein mal je Position der Auswahlliste ausführe.
Private Sub Button_Click()
Sheets("Ausgangstabelle").Select
Sheets("Ausgangstabelle").Range("$A:$Z").AutoFilter Field:=5, Criteria1:=Sheets(" _
Filtertabelle").Range("A1").Value  'Filter setzen
Sheets("Ausgangstabelle").Range("$A:$Z").AutoFilter Field:=4, Criteria1:=Sheets(" _
Filtertabelle").Range("A2").Value
Sheets("Ausgangstabelle").Range("$A:$Z").AutoFilter Field:=3, Criteria1:=Sheets(" _
Filtertabelle").Range("A3").Value
Sheets("Ausgangstabelle").Range("$A:$Z").AutoFilter Field:=2, Criteria1:=Sheets(" _
Filtertabelle").Range("A4").Value
Sheets("Ausgangstabelle").Range("$A:$Z").AutoFilter Field:=1, Criteria1:=Sheets(" _
Filtertabelle").Range("A5").Value
Sheets("Ausgangstabelle").Range("A:A,C:C,F:F,G:G,:M,V:V,X:X,Z:Z ").Copy 'gefilterten Bereich  _
kopieren
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
With Selection
.VerticalAlignment = xlTop
.Orientation = 0
.AddIndent = False
.ShrinkToFit = True
.ReadingOrder = xlContext
.MergeCells = False
End With
ActiveWorkbook.SaveAs Filename:="H:\Auswertungen\" & Workbooks("Auswertung.xls").Worksheets(" _
Filtertabelle").Range("A7").Value & ".xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
Windows("Auswertung.xls").Activate
Sheets("Ausgangstabelle").Select
ActiveSheet.Range("$A:$Z").AutoFilter Field:=1    'Filter zurücksetzen
ActiveSheet.Range("$A:$Z").AutoFilter Field:=2
ActiveSheet.Range("$A:$Z").AutoFilter Field:=3
ActiveSheet.Range("$A:$Z").AutoFilter Field:=4
ActiveSheet.Range("$A:$Z").AutoFilter Field:=5
End Sub
Und genau hierrüber stolpere ich gerade:
ich möchte, dass genau dieser Filter x-mal durch eine hinterlegte Liste ausgeführt wird, und die das restliche hinterlegte Makro im Loop lassen soll, d.h. x-mal die jeweilige Auswertung als eigene Datei ausspielt:
Sheets("Ausgangstabelle").Range("$A:$Z").AutoFilter Field:=5, Criteria1:=Sheets("Filtertabelle").Range("A1").Value 'Filter setzen
Kann mir jemand helfen?
Danke Euch
Gruß Frank

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: filterweitergabe per loop zum auslösen makro
29.05.2014 12:50:15
fcs
Hallo Frank,
ich hab dein Makro mal in die gewünschte Richtung optimiert.
Besondere Probleme bereiten dabei unterschiedliche Einstellungen der Formatvorlage "Standard" in Quelldatei und neu angelegter Datei. Insbesondere für Font.Name und -Größe sowie Textausrichtungen.
Auch das Problem der Dateigröße hab ich in den Griff bekommen. Statt mehrerer MByte sind es jetzt nur noch wenige kByte. Es werden jetzt nicht mehr die kompletten Spalten kopiert und formatiert sondern nur noch der tatsächliche Bereich mit Daten.
Gruß
Franz
Textdatei mit Makro:
https://www.herber.de/bbs/user/90891.txt

Anzeige
AW: filterweitergabe per loop zum auslösen makro
30.05.2014 11:17:20
Frank
Hallo Franz,
danke für dein Makro, hab noch ein paar Probleme mit der Integration in meinen Tabelle:
Wo hinterlege ich hier die Liste für die Übergabe an den ersten Filter?
Das Makro übernimmt jetzt alle Inhalte, auch Formeln, dies hab ich jetzt durch xlvaluesandnumberformats geändert, jetzt hab ich allerdings keine Zellformatierung mehr... Kann ich auchnur Werte und ALLE Formate übertragen?
Das Makro hängt erhängt sich an der Stelle an der das Fenster in der neuen Datei eingefroren werden soll.
Vielleicht noch ein bisschen Hilfe ;)

AW: filterweitergabe per loop zum auslösen makro
30.05.2014 23:53:10
fcs
Hallo Frank,
Wo hinterlege ich hier die Liste für die Übergabe an den ersten Filter?
Für den 1. Durchlauf holt sich das Makro die Filterwerte und den Dateinamen im Blatt "Filtertabelle" aus dem Zellbereich A1:A7, im 2. aus B1:B7 und so weiter. Das hatte ich im Kommentar aber auch schon geschrieben. Den Zellbereich kann man natürlich mit ein paar Modifikationen im Code anpassen. Die Werte sollten aber möglichst in einem zusammenhängenden Zellbereich stehen.
Das Makro übernimmt jetzt alle Inhalte, auch Formeln, dies hab ich jetzt durch xlvaluesandnumberformats geändert, jetzt hab ich allerdings keine Zellformatierung mehr... Kann ich auchnur Werte und ALLE Formate übertragen?
Probier es mal so:
          'Daten kopieren
rngCopy.Copy Destination:=.Cells(1, 1)
'oder so
'Daten kopieren
rngCopy.Copy
.Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
.Cells(1, 1).PasteSpecial Paste:=xlPasteValues

Die erste Methode ist die sinnvollere. Beim Kopieren von gefilterten Zellbereich fügt Excel automatisch nur Formate und Werte ein. Bei PasteSpecial musst man dies explizit angeben.
Das Makro hängt erhängt sich an der Stelle an der das Fenster in der neuen Datei eingefroren werden soll.
Ersetze Range("A2").Select durch ActiveSheet.Range("B2").Select
Du hast deinen Code scheinbar in einem Tabellenblatt-Modul stehen. Da müssen Zellen in anderen Blättern immer mit der vollständigen Referenz zum Worksheet-Objekt angegeben werden, in dem das Makro Aktionen ausführen soll.
Gruß
Franz
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige