Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Laufzeitfehler 91 ohne Deklarationen
#11
Hi,

hier zwei Beispiele für das Überprüfen des Autofilters und das Rücksetzen.

Option Explicit

Sub Test()
   Range("A1").Select
   If ActiveSheet.AutoFilterMode Then
      Selection.AutoFilter
      Selection.AutoFilter
   End If
   
   'hier Dein abzuarbeitender Code 
   
End Sub

Sub Test2()
   Range("A1").Select
   'Autofilter ausschalten 
   If ActiveSheet.AutoFilterMode Then Range("A:A").AutoFilter
   If Not ActiveSheet.AutoFilterMode Then Selection.AutoFilter
   
   'hier Dein abzuarbeitender Code 
   MsgBox ("Autofilter zurückgesetzt!")
   
   'Autofilter einschalten 
   If ActiveSheet.AutoFilterMode Then Range("A:A").AutoFilter
   If Not ActiveSheet.AutoFilterMode Then Selection.AutoFilter
   
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • SiriKlaus
Antworten Top
#12
Hallo Ralf,

der erste Code schaltet den Autofilter nicht ein, wenn er nicht eingeschalten ist. Ist er eingeschalten, wird er ausgeschalten und wieder eingeschalten Sad
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top
#13
Hi,

dann so?
Sub Test()
   Range("A1").Select
   If ActiveSheet.AutoFilterMode Then
      Selection.AutoFilter
      Selection.AutoFilter
   Else
      Selection.AutoFilter
   End If
   
   'hier Dein abzuarbeitender Code 
   
End Sub
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • SiriKlaus
Antworten Top
#14
Hallo Ralf,

eher so

Code:
Sub Test()
   Range("A1").Select   'darauf würde ich verzichten
   If ActiveSheet.AutoFilterMode Then
      Selection.AutoFilter
   Else
      Selection.AutoFilter
   End If
  
   'hier Dein abzuarbeitender Code
  
End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • SiriKlaus
Antworten Top
#15
Hi Stefan,

nein, das hatte ich getestet. Wenn der Autofilter eingeschaltet ist und die Daten gefiltert, wird durch einmaliges "Selection.AutoFilter" dieser ausgeschaltet und nicht nur der Filter rückgesetzt. Deswegen muß er ausgeschaltet und wieder eingeschaltet werden.
Antworten Top
#16
Hallo Ralf,

und so?

Code:
Sub Test()
   Range("A1").Select   'darauf würde ich verzichten
   If ActiveSheet.AutoFilterMode Then
'      Selection.AutoFilter
      If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
   Else
      Selection.AutoFilter
   End If
  
   'hier Dein abzuarbeitender Code
End Sub
Gruß Stefan
Win 10 / Office 2016
[-] Folgende(r) 1 Nutzer sagt Danke an Steffl für diesen Beitrag:
  • SiriKlaus
Antworten Top
#17
Hallo Ralf,

ja, so passt der erste auch Smile

Hallo Steffl,

der Autofilter muss wieder an sein, um dann mit dem Autofilter.Sort usw. weitermachen zu können.


@all

das mit dem Select A1 wegzulassen geht nicht ganz auf - wenn man vielleicht anderswo auf dem Blatt ist und dort auch ein unabhängiger Autofilter geschalten werden könnte.

Dann als Verbesserung vielleicht direkt, bei Leerzeilen auch mit dem kompletten Bereich oder zumindest der ersten Zeile oder alternativ auch mit with und dem Bereich.

If not activesheet.AutoFilterMode Then Range("A1:B1").Autofilter
'hier weitere mit dem sort ...
ActiveSheet.AutoFilter.Sort.SortFields.Clear
...

Nur falls ein anderer Bereich gefiltert sein könnte, dann ggf
ActiveSheet.AutoFilter
vor die If-Zeile. Denn damit ist die eventuell bereits vorgenommene Filterauswahl weg
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
[-] Folgende(r) 1 Nutzer sagt Danke an schauan für diesen Beitrag:
  • SiriKlaus
Antworten Top
#18
Hi,

hier eine Lösung von Uwe:
Code:
Sub AF_Test()
   With ActiveSheet
     If .AutoFilterMode Then
       If .FilterMode Then
         .ShowAllData
       End If
     Else
       .Range("A1").CurrentRegion.AutoFilter
     End If
   End With
End Sub

siehe hier #7
[-] Folgende(r) 1 Nutzer sagt Danke an Rabe für diesen Beitrag:
  • SiriKlaus
Antworten Top
#19
Hallo André,

(23.02.2018, 10:41)schauan schrieb: - wenn man vielleicht anderswo auf dem Blatt ist und dort auch ein unabhängiger Autofilter geschalten werden könnte.

hört sich interessant an. Hier hatten wir heute das Gleiche.  Blush

Gruß Uwe
Antworten Top
#20
Hallo Uwe,

Nicht ganz. Man kann fast ja an beliebiger Stelle einen Autofilter setzen wenn noch keiner besteht. Wenn ich den per code einschalten will und bin nicht dort, wo er hin soll und hab das nicht konkret programmiert bin ich vielleicht mit dem Ergebnis nicht zu frieden Sad
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste