Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Schleife fuer Filter: alles einmal anzeigen

Schleife fuer Filter: alles einmal anzeigen
abu
Hallo Zusammen,
bastel mir gerade ein Makro und haenge bei folgendem:
Spalte A bis L stehen Daten, erste Zeile Ueberschriften.
Darauf lege ich den Autofilter.
Nun moechte ich gerne das auf Spalte G gefiltert wird und das Excel mir nacheinander alle unterschiedlichen Werte einmal anzeigt.
Ziel ist das ich atomatisch von allen Zeilen einen Ausdruck bekomme.
Hat jemand eine Idees wie ich das umsetze?
Beste Gruesse
Abu

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
Mal als Idee
19.08.2010 12:57:19
Rudi
Hallo,
Sub FilternUndDrucken()
Dim rngG As Range, oFilter As Object, i As Integer
Set oFilter = CreateObject("Scripting.dictionary")
For Each rngG In Range(Cells(2, 7), Cells(Rows.Count, 7).End(xlUp))
oFilter(rngG.Value) = rngG.Value
Next
For i = 1 To oFilter.Count
Cells(1, 1).AutoFilter Field:=7, Criteria1:=oFilter(i)
ActiveSheet.PrintOut
Next
End Sub

Gruß
Rudi
Filter zeigt nichts an
19.08.2010 13:41:23
abu
Hallo Rudi,
erstmal Danke fuer deinen Ansatz.
Habs mal eingebaut und getestet. Ergebnis ist das er nichts Anzeigt und deshalb auch nur Ausdrucke mit den Ueberschriften liefert.
Wenn ich den Code richtig verstanden hab, dann laeuft erst eine schleife und nimmt alle Werte auf die in Spalte G sind und in der 2 Schleife soll dann durch die Variable oFilter jeder Wert angezeigt werde und dann jeweils ein Ausdruck
Kann es sein das hier ein kleiner Fehler ist: Criteria1:=oFilter(i), habe es damit probiert:oFilter(rngG.Value) aber das funktioniert auch nicht.
Oder ist es ein Fehler wenn ich das in meinen Code einbaue?
Vllt. kannst Du noch ein bissel Hilfestellung geben.
Gruss
Abu
Anzeige
AW: Filter zeigt nichts an
19.08.2010 15:06:53
abu
Hallo,
habe jetzt rausgefunden das es an dem Ausdruck liegen muss: oFilter(i)
Zwar wird oFilter mit Items belegt aber ich bekomm sie einfach nicht angesprochen.
Kann mir da vllt. jemand weiterhelfen, also den Namen und Zaehler reicht ja nicht da der Wert immer auf Null bleibt obwohl der Zaehler hochzaehlt.
Bester Gruesse
Abu
Loesung
19.08.2010 15:47:11
abu
So habe nun endlich einen Code zusammen geklebt der funktioniert.
Sub Test2()
Dim ar As Variant
Dim a As Integer
Dim rngG As Range, oFilter As Object, i As Integer
i = 1
a = 0
Set oFilter = CreateObject("Scripting.dictionary")
For Each rngG In Range(Cells(2, 5), Cells(Rows.Count, 5).End(xlUp))
oFilter(rngG.Value) = rngG.Value
a = a + 1
Next
a = a - 1
ar = oFilter.Keys
For i = 1 To a
Cells(1, 1).AutoFilter Field:=5, Criteria1:=ar(i)
ActiveSheet.PrintOut
Next
End Sub

Anzeige
da fehlt dir aber ein Wert
19.08.2010 15:57:44
Rudi
Hallo,
ar ist Nullbasiert (es sei denn, du hast Option Base 1 im Kopf des Moduls stehen)
Sub Test2()
Dim ar As Variant
Dim rngG As Range, oFilter As Object, i As Integer
Set oFilter = CreateObject("Scripting.dictionary")
For Each rngG In Range(Cells(2, 5), Cells(Rows.Count, 5).End(xlUp))
oFilter(rngG.Value) = rngG.Value
Next
ar = oFilter.Keys
For i = 0 To UBound(ar)
Cells(1, 1).AutoFilter Field:=5, Criteria1:=ar(i)
ActiveSheet.PrintOut
Next
End Sub

Gruß
Rudi
Funktioniert nicht!
19.08.2010 16:34:13
abu
Hallo Rudi,
ar ist Nullbasiert (es sei denn, du hast Option Base 1 im Kopf des Moduls stehen)
ich hatte eher einen zuviel drumm hab ich a-1 gemacht.
Nun die wichtigste Frage: beide Codes, deiner und meiner, laufen perfekt wenn ich sie in einem eigenen Modul stehen habe. Sobald ich es in mein Makro einbaue, bekomme ich wieder nur die Ueberschriftenzeile gedruckt. Das ist zum ausflippen, woran liegt das?
Zum testen habe ich eine Datei wo nach E gefiltert werden soll also (5). In meinem eigentlichen Makro stehen die Daten aber in G also 7 da ich vorher 2 Spalten einfuege. Wenn ich jetzt deinen Teil vom Code einbaue, macht er neben dem Fehler mit der Anzeige auch den Fehler das er 2 Spalten zu weit filtert. Also muss ich den Filter trotzdem auf 5 setzen obwohl die Daten in G stehen.
Hoffentlich kannst Du/irgendwer weiterhelfen denn ich bin kurz vorm' ausflippen!
Beste Gruesse
abu
Anzeige
Mappe? owT
19.08.2010 22:49:02
Rudi
erst Spalte 7 dann Spalte 5
20.08.2010 08:57:32
abu
Hallo Rudi,
hier meine weiteren Erkenntnisse:
Im ersten Teil der Schleife:
For Each rngG In Range(Cells(2, 7), Cells(Rows.Count, 7).End(xlUp))
oFilter(rngG.Value) = rngG.Value
Next
Muss ich Spalte 7 eingeben damit er die richtigen Werte findet, ist fuer mich klar!
Aber im zweiten Teil:
ar = oFilter.Keys
For i = 0 To UBound(ar)
Cells(1, 1).AutoFilter Field:=5, Criteria1:=ar(i)
'ActiveSheet.PrintOut
Next
Muss ich Spalte 5 eingeben damit es funktioniert aber ich verstehe nicht warum?
Beste Gruesse
abu
Anzeige
AW: erst Spalte 7 dann Spalte 5
21.08.2010 03:00:26
fcs
Hallo abu,
der Grund ist relativ einfach.
Du fügst die beiden Spalten ein. Dabei wird der gesamte Autofilterbereich nach rechts verschoben, die beiden neuen Spalten sind ab nicht Teil des Autofilterbereichs.
Die Zählung der Felder beginnt immer in der linken Spalte des Autofilterbereichs mit 1. Somit muss du beim erstellen der Lister der Filterwerte auf die Spalte 7 der Tabelle zugreifen. Diese Spalte 7 ist aber die 5. Spalte (Field:=5) des Autofilterbereichs.
Gruß
Franz
AW: erst Spalte 7 dann Spalte 5
23.08.2010 12:01:05
abu
Hallo Franz,
vielen Dank fuer Deine Erklaerung.
Gruss
Abu

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige