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

Forumthread: Autofilter

Autofilter
07.09.2005 04:09:37
gnilk
Hallo Leute,
habe wieder mal ein Problem und brauche den VBA Code:
ich habe eine Tabelle. Manchmal ist der Autofilter Modus gesetzt ein anderes mal nicht. Ich will, dass mein VBA ueberprueft ob ein Autofilter gesetzt wurde. Wenn keiner gesetzt wurde soll VBA ihn setzen und falls ein Autofilter gesetzt wurde, so soll VBA ihn belassen.
Ich hab mir das mal so vorgestellt: (War natuerlich wieder zu naiv und hat nicht geklappt)
If Selection.FilterMode = False Then Selection.AutoFilter
Brauche Hilfe
Danke
Gnilk
Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Autofilter
07.09.2005 06:53:11
Nepumuk
Hallo Gnilk,
versuch es mal so:
Public Sub test()
    If ActiveSheet.AutoFilterMode Then MsgBox "Es ist ein Filter in der Tabelle"
    If ActiveSheet.FilterMode Then MsgBox "Der Autofilter hat eine Liste gefiltert"
End Sub

Und benutzt doch mal die Hilfe, da steht das alles drin. Woher, meint ihr, weiß ich das? Auf alle Fälle nicht durch göttliche Eingebung.
Gruß
Nepumuk
Excel & VBA – Beispiele
Anzeige
@nepumuk
08.09.2005 02:02:14
gnilk
Lieber Nepumuk,
ich glaube Du hast meine Frage nicht wirklich gelesen, oder Deine Microsoft Hilfe ist defekt. Versteh das bitte nicht falsch, aber die Hilfe bringt mir in dem Fall gar nichts.
Ich will auch nicht Deine Excel-Faehigkeiten ankreiden, jedoch ist es nicht die Loesung meines Problems.
Ich will einen Autofilter setzen, wenn keiner gesetzt ist. Sollte jedoch schon einer gesetzt sein, so will ich dass es so bleibt. Ich will KEINE MsgBox.
Trotzdem vielen Dank fuer Deine Bemuehungen.
Ciao
Gnilk
Anzeige
AW: @nepumuk
08.09.2005 08:14:33
Nepumuk
Hallo Gnilk,
das war nur als Beispiel gedacht, wie du abfragen kannst ob ein Filter in der Tabelle ist. Da ich deinen Tabellenaufbau nicht kenne, kann ich dir kein fertiges Programm liefern.
Gruß
Nepumuk
AW: Autofilter
07.09.2005 07:06:49
Christoph
Hallo,
der folgende Code aktiviert den Autofilter. Es werden jedoch keine Filter gesetzt.
If Not Worksheets(1).AutoFilterMode Then Worksheets(1).Cells.AutoFilter
oder auch:
If Not ActiveSheet.AutoFilterMode Then Selection.AutoFilter
beide Zeilen erzeugen einen Fehler, wenn der Bereich keine Daten enthält.
Gruß
Christoph
Anzeige
da hätte ich ja auch mal F5 drücken können (o.T)
07.09.2005 07:10:53
Christoph
AW: da hätte ich ja auch mal F5 drücken können (o.T)
08.09.2005 07:53:56
gnilk
Danke fuer Deine Hilfe,
hat aber nicht so funktioniert, wie ich mir das vorstelle.
Habe das Problem jetzt aber auf eine andere Art und Weise geloest.
Ciao
Gnilk
AW: Autofilter
07.09.2005 07:27:02
Manfred
Hallo Gnilk,
Versuche doch mal folgenden Code:

Private Sub CommandButton1_Click()
Dim xx As Worksheet
Set xx = Worksheets("Tabelle1")
If xx.AutoFilterMode = False Then
xx.Rows("1:1").Select
Selection.Autofilter
End If
End Sub

Um das Ereignis auszulösen habe ich einen CommandButton verwendet. Geht natürlich an beliebiger anderer Programmstelle auch.
Gruß
Manfred
Anzeige
AW: Autofilter
08.09.2005 07:54:49
gnilk
Danke fuer Deine Hilfe,
hat aber nicht so funktioniert, wie ich mir das vorstelle.
Habe das Problem jetzt aber auf eine andere Art und Weise geloest.
War eine gute Anregung.
Ciao
Gnilk
AW: Autofilter
07.09.2005 07:36:04
Beate
Hallo Gnilk,
Private Sub Worksheet_Activate()
    If ActiveSheet.AutoFilterMode Or ActiveSheet.FilterMode Then Exit Sub
    Rows("1:1").AutoFilter
End Sub

Zeilenzahl für den Autofilter anpassen.
Gruß,
Beate
Anzeige
AW: Autofilter
08.09.2005 07:58:25
gnilk
Hallo Beate,
Dein Vorschlag sieht super aus, jedoch weiss ich nicht wie ich einen PrivateSub in mein Makro eingliedern kann. Mein Makro soll ja noch weiterlaufen.
Habe das Problem jetzt auf eine andere Art un Weise geloest. Waere aber nett, wenn du mir trotzdem erklaeren koenntest wie ich ein PrivatSub einbaue, so dass mein anderes Makro noch weiterlaeuft.
Ciao
Gnilk
Anzeige
Codeeinbau
08.09.2005 22:51:06
Beate
Hallo Gnilk,
dann schneide doch meinen Code einfach aus, aber er muss ans Ende deines Codes, weil das Makro ja beendet wird, wenn schon ein Filter eingebaut ist. Also, dass dein Makro dann so aussieht:
Sub Dein_Makro()
    'hier dein Code
    If ActiveSheet.AutoFilterMode Or ActiveSheet.FilterMode Then Exit Sub
    Rows("1:1").AutoFilter
End Sub

Gruß,
Beate
Anzeige
AW: Codeeinbau andere Alternative
08.09.2005 23:07:25
Beate
Hallo Gnilk,
hier noch die Variante, wenn du vor und nach meinem Code eigenen Code einfügen möchtest:
Sub Dein_Makro2()
    'hier dein Code
    If ActiveSheet.AutoFilterMode Or ActiveSheet.FilterMode Then
        GoTo weiter
        Else: Rows("1:1").AutoFilter
    End If
    weiter:
    'hier dein Code
End Sub

Gruß,
Beate
Anzeige
@Beate
09.09.2005 01:38:08
gnilk
Hallo Beate,
ja ich habe es auch so aehnlich geloest. Ich konnte es zum Glueck schon machen, ohne Deinen Beitrag zu loesen. Vielleicht darf ich die Hoffnung mit VBA noch nicht aufgeben! Aber trotzdem vielen Dank fuer Deinen Tip. Mich haette nur gerne interessiert, wie ich mehrere Subs mit nur einem CommandButton(z.B.) aktivieren kann.
So habe ich es gemacht:
If ActiveSheet.AutoFilterMode Or ActiveSheet.FilterMode Then GoTo Weiter
Selection.AutoFilter
Weiter:
Es schreit regelrecht nach Plagiat! Nehm es mir nicht uebel. Deine Anregung war super!
Ciao
Gnilk
PS: Gruss aus Down Under
Anzeige
AW: @Beate
09.09.2005 10:53:37
Beate
Hallo Gnilk,
gleichzeitig laufen kann immer nur ein Makro. Aber in deinem Makro kann ein anderes aufgerufen werden und nach Abarbeitung desselben wird das Ausgangsmakro weiter abgearbeitet.
Angenommen, dein "Untermakro" heißt Test2 und dein "Kopfmakro" Test1, dann geht das so in Test1:
Sub Test1()
    'Makrocode
    Call Test2
    'Makrocode
End Sub


Gruß,
Beate
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Autofilter in Excel VBA nutzen


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu starten.

  2. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeineDatei.xlsx)" > Einfügen > Modul.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub SetAutoFilter()
       If Not ActiveSheet.AutoFilterMode Then
           ActiveSheet.Cells(1, 1).AutoFilter
       End If
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus, um den Autofilter zu aktivieren, falls keiner gesetzt ist.


Häufige Fehler und Lösungen

  • Fehler: "Der Bereich enthält keine Daten."

    • Lösung: Stelle sicher, dass Deine Tabelle Daten enthält, bevor Du den Autofilter anwendest.
  • Fehler: "Objektvariable nicht festgelegt."

    • Lösung: Überprüfe, ob das ActiveSheet korrekt ist und die Tabelle, auf die Du zugreifen möchtest, tatsächlich aktiv ist.
  • Problem: Der Autofilter wird nicht gesetzt.

    • Stelle sicher, dass die Zeile, die den Autofilter aktivieren soll, korrekt ist. Verwende ActiveSheet.Cells(1, 1).AutoFilter, um die erste Zeile als Header zu setzen.

Alternative Methoden

Eine alternative Methode, um den Autofilter zu setzen, kann die Verwendung eines CommandButtons sein. Das folgende Beispiel zeigt, wie Du einen Button einfügen und den Filter setzen kannst:

  1. Gehe in Excel auf "Entwicklertools" > "Einfügen" > "Button (Formularsteuerung)".
  2. Ziehe den Button auf das Arbeitsblatt.
  3. Verknüpfe das folgende Makro mit dem Button:

    Private Sub CommandButton1_Click()
       If Not ActiveSheet.AutoFilterMode Then
           ActiveSheet.Rows(1).AutoFilter
       End If
    End Sub

Praktische Beispiele

Um zu überprüfen, ob der Autofilter aktiv ist und ihn bei Bedarf zu setzen, kannst Du den folgenden Code verwenden:

Sub CheckAndSetAutoFilter()
    If Not ActiveSheet.AutoFilterMode Then
        ActiveSheet.Cells.AutoFilter
    End If
End Sub

Dieser Code prüft den Status des autofiltermode und aktiviert ihn, falls er nicht bereits gesetzt ist.


Tipps für Profis

  • Verwendung von FilterMode: Du kannst ActiveSheet.FilterMode verwenden, um zu überprüfen, ob ein Filter aktiv ist und gezielt darauf zu reagieren.

  • Einsatz von If-Bedingungen: Nutze If ActiveSheet.AutoFilterMode Then ... für spezifische Bedingungen, z.B. für verschiedene Filteroperationen.

  • Optimierung der Performance: Bei großen Datenmengen kann es sinnvoll sein, den Autofilter in einem With-Block zu verwenden, um den Code zu optimieren.


FAQ: Häufige Fragen

1. Wie aktiviere ich den Autofilter in einem bestimmten Arbeitsblatt?
Verwende den Befehl Worksheets("DeinBlatt").Cells.AutoFilter, um den Autofilter in einem spezifischen Arbeitsblatt zu aktivieren.

2. Was ist der Unterschied zwischen FilterMode und AutoFilterMode?
FilterMode zeigt an, ob ein Filter auf die Daten angewendet wurde, während AutoFilterMode den Status des Autofilters selbst anzeigt.

3. Wie kann ich den Autofilter deaktivieren?
Du kannst den Autofilter mit ActiveSheet.AutoFilterMode = False deaktivieren.

4. Kann ich mehrere Filter gleichzeitig anwenden?
Ja, Du kannst mehrere Filter auf verschiedene Spalten anwenden, solange der Autofilter aktiv ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige