Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1456to1460
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
Excel VBA AUTOFILTER
05.11.2015 12:59:02
AJB
Hallo zusammen,
folgendes Problem:
Der Code soll einen Autofilter setzen, falls kein Filter vorhanden ist (auch keine Filterzeile).
Falls doch, soll er nur alle Werte anzeigen! (.ShowallData)

'Filter löschen/einfügen
Worksheets("Umsatzliste_YMMA0231_1").Activate
With ActiveWorkbook.ActiveSheet
If .AutoFilterMode = True Then
.ShowAllData
Else
Range("Tabelle2[#Headers]").Select
Selection.AutoFilter
End If
End With

Der bisherige Code überspringt immer den If-Teil! Auch
.AutoFilter statt .AutoFiltermode hilft nicht weiter.
Vielen Dank für die Antworten :D

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

Betreff
Datum
Anwender
Anzeige
AW: Excel VBA AUTOFILTER
05.11.2015 13:40:37
matthias
Hallo AJB,
AutoFilterMode prüft ob ein Filter vorhanden ist, nicht ob tatsächlich gefiltert wurde, darum erzeugt .ShowAllData einen Fehler. Der Befehl dafür nenn sich FilterMode.
Die Anweisung .AutoFilterMode gibt wenn er aktiv ist schon den Wert True zurück, das ergäbe bei dir dann: If True = True Then ...
Dies ist natürlich überflüssig, darum kann man das so schreiben:
Sub Test()
With Worksheets("Umsatzliste_YMMA0231_1")
If .AutoFilterMode Then 'Autofilter vorhanden?
If .FilterMode Then .ShowAllData 'Autofilter in Benutzung? Wenn Ja, dann zeige alle Daten
Else 'kein Filter vorhanden
.Cells.AutoFilter 'Filter setzen
End If
End With
End Sub
Für die Faulen geht aber auch den Autofilter komplett zu entfernen und neu zu setzen, falls es keinen triftigen Grund gibt dies zu unterlassen. Denn beim Entfernen wird eh alles wieder angezeigt.
Sub Test()
With ActiveSheet
If .AutoFilterMode Then .Cells.AutoFilter 'entfernen
.Cells.AutoFilter 'neu setzen
End With
End Sub
Statt .Cells kannst du wieder deine Range("...") angeben, muss aber nicht. Denn bei .Cells erkennt er das komplette Blatt als Filterbereich an.
lg Matthias

Anzeige
AW: Excel VBA AUTOFILTER
05.11.2015 14:02:18
AJB
Moin,
der Code umgeht jedes mal die If-Schleife. Das heißt, egal ob ein Filter gesetzt ist (DABEI SIND KEINE Daten ausgefiltert, lediglich die Filteransicht ist aktiviert - oben in der Menu-Leiste gelb hinterlegt) Schwierig zu beschreiben:(
Aber auch wenn ich den Filter komplett rausnehme, (oben in der Menuleiste ist der Filter wieder grau) überspringt er die If Schleife.
Danke schon mal im Vorraus

AW: Excel VBA AUTOFILTER
05.11.2015 13:59:04
EtoPHG
Hallo AJB
Ich bin der Meinung, dass du den falschen Bereich abfragst.
Dein Code, nach dem Else, deutet darauf hin, dass du einen Filter eines ListObjects und nicht einen des Blatts testen willst. Dss sind 2 verschiedene Paar Stiefel. Auf einem ListObject funktioniert z.B. die .AutoFilterMode Eigenschaft nicht. Auf einem ListObject kannst du den Zustand des .AutoFilter ein und ausschalten. Auf letzteren gibt es keine .ShowAllData Methode, sondern du musst die Filter einzeln zurücksetzen. Lies die VBA Hilfe zu ListObject-Objekt und dessen Eigenschaften und Methoden!
Gruess Hansueli
Anzeige

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige