Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA Autofilter setzen ohne select

VBA Autofilter setzen ohne select
26.03.2020 16:58:00
W
Hallo Forum,
ich möchte beim Aufbau mehrerer Tabellen auch die Möglichkeit für einen Autofilter aktivieren:
With Workbooks(ThisWorkbook.Name).Worksheets(FFiles)
.Cells.Columns.AutoFit
.Range(Cells(1, 1), Cells(FLine, 4)).AutoFilter
End With
Das mit dem "AutoFit" funktionert, das mit dem Autofilter jedoch nicht; dort bekommt ich den Fehler 1004. An dem "." vor dem Range liegt es nicht; ich habe schon beide Versionen versucht.
Keine Probleme habe ich, wenn ich zuerst die Tabelle selektiere und dann den Autofilter aktiviere:
Sheets(FFiles).Select
Range(Cells(1, 1), Cells(FLine, 4)).AutoFilter
Im Forum habe ich zwar ein Beispiel gefunden, doch dort wird ein bestehender Filter angewendet.
Ist mein Problem ohne "select" lösbar?
Gruß W H21
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Autofilter setzen ohne select
26.03.2020 17:04:40
ChrisL
Hi
Hab zwar nur die Hälfte gelesen, aber fällt mir sofort auf (die beiden Punkte) :)
.Range(.Cells(1, 1), .Cells(FLine, 4)).AutoFilter
cu
Chris
AW: VBA Autofilter setzen ohne select
26.03.2020 17:10:50
W
Hallo Chris,
Danke für die schnelle Antwort. Und für den Vorschlag. Mit den beiden vorangestellten Punkten funktionert es. So habe ich noch nie einen Range angegeben.
Wieder einmal das Problem dank dem Forum gelöst.
Gruß W H21
Anzeige
AW: VBA Autofilter setzen ohne select
26.03.2020 17:13:08
onur
Und
Workbooks(ThisWorkbook.Name)

könnte durch
ThisWorkbook

ersetzt werden, aber Beides wäre trotzdem völlig überflüsstig, da sämtliche Worksheet-Angeben ohne explizite Workbook-Angabe immer ThisWorkbok betreffen.
Anzeige
AW: VBA Autofilter setzen ohne select
26.03.2020 17:19:41
ChrisL
Hi onur
Ist Default nicht ActiveWorkbook?
cu
Chris
AW: VBA Autofilter setzen ohne select
26.03.2020 17:26:17
onur
Oooops - Da hast du auch nun wieder Recht :)
AW: VBA Autofilter setzen ohne select
26.03.2020 17:26:20
Daniel
Richtig, default ist ActiveWorkbook, so wie ActiveSheet der Default ist, wenn die Sheetangabe fehlt.
Eine Ausnahme gibt es jedoch:
Wenn der Code in einem Tabellenblattmodul liegt, dann ist dieses Tabellenblatt der Default-Wert, wenn die Blattangabe fehlt.
Gruß Daniel
Anzeige
AW: VBA Autofilter setzen ohne select
26.03.2020 17:28:12
onur
Hätte ich aber trotzdem bedenken müssen!
AW: VBA Autofilter setzen ohne select
26.03.2020 17:22:12
Daniel
Hi
Ein Fehler, den wohl jeder machen muss:
Beachte, das Cells, Range, Rows und Columns ohne Tabellenblattangabe davor immer auf das aktive Tabellenblatt referenzieren.
Das gilt auch, wenn sie innerhalb von anderen Funktionen stehen wie bei Range(Cells(), Cells())
Der Fehler kommt, wenn die Range auf einem anderen Blatt liegen, als die Cells, die die Range definieren.
Da die Cells die Range definieren, darf man das Tabellenblatt vor der Range sogar weglassen, es reicht innerhalb vor den Cells.
Da das recht aufwendig wird, insbesondere dann wenn noch das Worksheet in der Kette mit dazu kommt und man ggf die With-klammer schon anderweitig verwendet, bietet sich die Bereichsbefinition mit Resize an:
.Cells(1, 1).resize(FLine, 4).AutoFilter
Beim Auzofilter kann man, wenn die Tabelle sauber aufgebaut ist, auch die Automatische Bereichserkennung nutzen die aktiv wird, wenn man nur die erste Zelle des Bereichs angibt:
.Cells(1, 1).Autofilter
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

VBA Autofilter aktivieren ohne Select


Schritt-für-Schritt-Anleitung

Um den Excel Autofilter über VBA zu aktivieren, ohne vorher eine Auswahl zu treffen, kannst du folgenden Code verwenden:

With ThisWorkbook.Worksheets("DeinTabellenblatt")
    .Cells.Columns.AutoFit
    .Range(.Cells(1, 1), .Cells(FLine, 4)).AutoFilter
End With

Achte darauf, dass du die Punkte vor Cells und Range verwendest. Diese Punkte sind entscheidend, um auf die Objekte innerhalb des With-Blocks zuzugreifen und Fehler zu vermeiden.


Häufige Fehler und Lösungen

Ein häufiger Fehler bei der Verwendung des VBA Autofilters ist der Laufzeitfehler 1004, der auftritt, wenn der Range nicht korrekt definiert ist. Um diesen Fehler zu beheben:

  1. Stelle sicher, dass die Range korrekt ist und auf die gewünschten Zellen verweist.
  2. Verwende die Punkte im Code wie oben beschrieben, um die Gültigkeit des Range-Objekts zu gewährleisten.
  3. Überprüfe, ob die FLine-Variable ordnungsgemäß definiert ist.

Alternative Methoden

Eine alternative Methode, um den Autofilter zu setzen, ist die Verwendung der Resize-Methode. Damit kannst du die Größe des Bereichs dynamisch anpassen:

With ThisWorkbook.Worksheets("DeinTabellenblatt")
    .Cells(1, 1).Resize(FLine, 4).AutoFilter
End With

Diese Methode ist besonders nützlich, wenn du den Bereich nicht manuell festlegen möchtest, sondern dynamisch anpassen willst.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du den Excel Autofilter aktivieren kannst:

  1. Einfacher Autofilter für eine Tabelle:
Sub SetAutofilter()
    With ThisWorkbook.Worksheets("Tabelle1")
        .Cells(1, 1).AutoFilter
    End With
End Sub
  1. Autofilter mit benutzerdefiniertem Bereich:
Sub SetCustomAutofilter()
    Dim FLine As Long
    FLine = 10 ' Beispiel: Anzahl der Zeilen
    With ThisWorkbook.Worksheets("Tabelle1")
        .Range(.Cells(1, 1), .Cells(FLine, 4)).AutoFilter
    End With
End Sub

Tipps für Profis

  • Nutze die AutoFilter-Funktion, um Daten schnell zu filtern und zu analysieren.
  • Achte darauf, dass die Spaltenüberschriften korrekt sind, da der Autofilter auf diesen basieren wird.
  • Experimentiere mit den Filteroptionen, um die besten Ergebnisse für deine Daten zu erzielen.

FAQ: Häufige Fragen

1. Wie kann ich den Autofilter wieder deaktivieren?
Um den Autofilter zu deaktivieren, kannst du den folgenden Code verwenden:

With ThisWorkbook.Worksheets("DeinTabellenblatt")
    .AutoFilterMode = False
End With

2. Was mache ich, wenn der Autofilter nicht funktioniert?
Überprüfe, ob die Range korrekt definiert ist und ob die richtigen Punkte im Code verwendet wurden. Achte auch darauf, dass die Daten in der Tabelle korrekt angeordnet sind, da der Autofilter nur auf ordnungsgemäße Daten reagiert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige