ein VBA Code von Stefan Onken selektiert mir wunderbar die aktuell
selektieren Werte im Autofilter einer anderen Spalte. Das funktioniert
mit normalen Bereichen prima - unabhᅵngig davon, ob ein Autofilter
gesetzt ist, oder nicht.
Ist die Spalte mit dem betroffenen Autofilter jedoch (Excel 2007) "Als
Tabelle formatiert" kommt der Laufzeitfehler 1004: "Die
AutoFilter-Methode des Range-Objektes konnte nicht ausgefᅵhrt werden.
Hat jemand eine Idee, wie ich den Code anpassen muss?
Zusatzproblem: Der Autofilter ist derzeit nach Durchlauf des Makros
exakt korrekt eingestellt. Ist nur ein Wert sowie "leere" markiert,
wird auch das richtige angezeigt. Ist jedoch mehr als ein Wert
markiert, werden plᅵtzlich die leeren Zellen nicht mehr angezeigt
(obwohl "leere" nach wie vor korrekt markiert ist. In anderen
(ebenfalls nicht als Tabelle formatieren) Tabellen funktioniert es
dagegen korrekt (Leere werden unabhᅵngig von der Anzahl der markieren
Elemente immer angezeigt).
Hier der Code Sub AutoFilterSetzen() von Stefan Onken, von dem ich oben
spreche:
Dim f()
ReDim f(Selection.Cells.Count)
For i = 1 To Selection.Cells.Count
f(i - 1) = Selection.Cells(i).text
Next
f(i - 1) = "="
ActiveSheet.Range("b:b").AutoFilter _
Field:=1, Criteria1:=f(), Operator:=xlFilterValues
End Sub
Viele Grᅵᅵe
Frank
die Makroaufzeichnung liefert hierfür:
ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter
Der Code müsste dann so aussehen:
Dim f()
ReDim f(Selection.Cells.Count)
For i = 1 To Selection.Cells.Count
f(i - 1) = Selection.Cells(i).Text
Next
f(i - 1) = "="
ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter _
Field:=2, Criteria1:=f(), Operator:=xlFilterValues
Der Name bei ListObjects muss ggfls angepasst werden.
> Zusatzproblem: Der Autofilter ist derzeit nach Durchlauf des Makros
> exakt korrekt eingestellt. Ist nur ein Wert sowie "leere" markiert,
> wird auch das richtige angezeigt. Ist jedoch mehr als ein Wert
> markiert, werden plötzlich die leeren Zellen nicht mehr angezeigt
> (obwohl "leere" nach wie vor korrekt markiert ist. In anderen
> (ebenfalls nicht als Tabelle formatieren) Tabellen funktioniert es
> dagegen korrekt (Leere werden unabhängig von der Anzahl der markieren
> Elemente immer angezeigt).
>
hmm, kann ich so nicht nachvollziehen. Ist es nur 1 Tabelle, wo das
nicht richtig funktioniert? Wenn ja, ist an der Tabelle etwas anders
als bei den anderen?
Kannst du evtl die Tabelle irgendwie (online) verfügbar machen?
Gruß
stefan
Das ist ein gutes Beispiel f�r:
"Man sollte Daten nicht formatieren, sondern erst deren Ausgabe
(Verwendung)." Wenn Du Dich daran h�ltst, wirst Du kaum solche Probleme
bekommen.
Bin xl2007-los, daher ohne Tipp.
--
Moin+Gruss Alexander - MVP for MS Excel - www.xxcl.de - mso2000sp3 --7-2
> die Makroaufzeichnung liefert hierf�r:
> ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter
ja, das hatte ich auch bekommen.
> Der Code m�sste dann so aussehen:
> Dim f()
> ReDim f(Selection.Cells.Count)
> For i = 1 To Selection.Cells.Count
> f(i - 1) = Selection.Cells(i).Text
> Next
> f(i - 1) = "="
> ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter _
ach so, ich dachte man m�sse
ActiveSheet.ListObjects("Tabelle1").Range("c:c").AutoFilter
schreiben. Aber stimmt, wie du es geschrieben hast, funktioniert es.
Vielen Dank!
> hmm, kann ich so nicht nachvollziehen. Ist es nur 1 Tabelle, wo das
> nicht richtig funktioniert? Wenn ja, ist an der Tabelle etwas anders
> als bei den anderen?
stimmt, dumm, dumm, der Klassiker: Da war nicht nichts in den Zellen
sondern ein Leerzeichen - damit die automatische Bereichserkennung
keinen Fehler macht...
Noch ein letzer Punkt zum Autofilter: Praktisch w�re es, ihn
anschliessend per Makro wieder auf alle Elemente anzeigen umzustellen.
Mit dem Code, den ich dazu fand, geht es bei Tabellen nicht:
With ActiveSheet
If .FilterMode = True Then
.ShowAllData
End If
End With
Mit diesem geht es zwar:
ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=1
aber eben nur, wenn das erste Feld gefiltert ist.
Wie k�nnte man in allen Feldern einer Tabelle alle Autofilter auf
"alles ausw�hlen" stellen?
Viele Gr��e
Frank
(Daten Filter Auto-) Filter aus -
(...-) Filter an
aufzeichnen und ggflls anpassen
>Wie k�nnte man in allen Feldern einer Tabelle alle Autofilter auf
>"alles ausw�hlen" stellen?
Alldieweil es daf�r in Excel 2007 einen Button gibt, habe ich den mal
aufgezeichnet und siehe da, das funktioniert auch zumindest in Excel
2003:
ActiveSheet.ShowAllData
Christoph Sternberg */\
> Alldieweil es daf�r in Excel 2007 einen Button gibt, habe ich den mal
> aufgezeichnet und siehe da, das funktioniert auch zumindest in Excel
> 2003:
>
> ActiveSheet.ShowAllData
ja, genau diesen Befehl hatte ich ja auch gefunden. Daher kommt
With ActiveSheet
If .FilterMode = True Then
.ShowAllData
End If
End With
aus meinem Posting.
Nur funktioniert die Sacheleider in XL 2007 nicht. Im bekomme immer
Laufzeitfehler 1004 Anwendugns- oder objektdefinierter Fehler.
Viele Gr��e
Frank
> (Daten Filter Auto-) Filter aus -
> (...-) Filter an
>
> aufzeichnen und ggflls anpassen
ja, das tat ich bereits. Daher kommt
ActiveSheet.ListObjects("Tabelle1").Range.AutoFilter Field:=1
aus dem Posting.
Aber es geht wie gesagt nur f�r das erste Feld.
Viele Gr��e
Frank
>With ActiveSheet
> If .FilterMode = True Then
> .ShowAllData
> End If
>End With
>
>aus meinem Posting.
>Nur funktioniert die Sacheleider in XL 2007 nicht. Im bekomme immer
>Laufzeitfehler 1004 Anwendugns- oder objektdefinierter Fehler.
Huch, mit 2007 hatte ich es doch getestet und erst nachher probiert, ob
es auch mit 2003 klappt!?
Exakt Dein Code bringt bei mir keinen Fehler.
Christoph Sternberg */\
hallo Frank,
Problem inzwischen gelöst?
Ich bekomme auch den Laufzeitfehler bei ShowAllData und dem als
Tabelle formatierten Bereich.
Mit diesem Code klappt das aber:
With ActiveSheet.ListObjects(1).Range
For i = 1 To .Columns.Count
.AutoFilter Field:=i
Next
End With
Gruß
stefan
> Problem inzwischen gel�st?
nein, das kann ich leider noch nicht - mehr auf die lange Bank der
Probleme geschoben, die gerade nicht so wichtig sind ;-)
> Ich bekomme auch den Laufzeitfehler bei ShowAllData und dem als
> Tabelle formatierten Bereich.
>
> Mit diesem Code klappt das aber:
>
> With ActiveSheet.ListObjects(1).Range
> For i = 1 To .Columns.Count
> .AutoFilter Field:=i
> Next
> End With
wunderbar - Vielen Dank!
Viele Gr��e
Frank
>Nur funktioniert die Sacheleider in XL 2007 nicht. Im bekomme immer
>Laufzeitfehler 1004 Anwendugns- oder objektdefinierter Fehler.
Ich hab' mal wieder nicht richtig gelesen und hoffe, das mit diesem
Posting nochmal gut machen zu k�nnen ;-)
Den Fehler bekomme ich jetzt auch, aber nur unter bestimmten
Bedingungen: Der Fehler kommt genau dann, wenn auch im Ribbon der
entsprechende L�schbutton f�r den Filter inaktiv ist: das ist er immer
dann der Fall, wenn entweder kein Autofilter aktiv ist oder die aktive
Zelle nicht innerhalb der Tabelle ist.
Christoph Sternberg */\
hallo Christoph,
hast du den Tabellenbereich für den Filter auch als Tabelle
formatiert
(ribbon Start/Formatvorlagen/Als Tabelle formatieren)?
Gruß
stefan
>hallo Christoph,
>hast du den Tabellenbereich f�r den Filter auch als Tabelle
>formatiert
>(ribbon Start/Formatvorlagen/Als Tabelle formatieren)?
Ja.
Christoph Sternberg */\
>hast du den Tabellenbereich f�r den Filter auch als Tabelle
>formatiert
>(ribbon Start/Formatvorlagen/Als Tabelle formatieren)?
Uiuiui, ich mu� schon wieder zur�ckrudern: Mit der Bedingung wie bei
Frank (.. If .FilterMode = True ..) kriege ich den Fehler 1004 �berhaupt
nicht mehr reproduziert. Lediglich der Filter wird nicht aufgehoben (es
passiert also nix), wenn die aktive Zelle nicht im Tabellenbereich ist.
Ohne die Bedingung kommt der Laufzeitfehler 1004, wenn kein Filter aktiv
oder die aktive Zelle nicht im Tabellenbereich ist.
Christoph Sternberg */\