Microsoft Excel

Herbers Excel/VBA-Archiv

Autofilter merken und wiederherstellen | Herbers Excel-Forum


Betrifft: Autofilter merken und wiederherstellen von: Fettertiger
Geschrieben am: 17.01.2012 17:10:28

Hallo zusammen,

in meiner Anwendung nutze ich Excel als ein Frontend zu Access. Bei bestimmten Schritten, schreibt mein Tool alle Daten in die Datenbank, löscht die Eingabetabelle in Excel und befüllt alles wieder mit akltualisierten Werten aus Access wieder neu. Das funktioniert auch soweit ganz prima. Leider haben die User jetzt angefangen sich Daten in Excel per Autofilter zurecht zu filtern. Nach dem Refresh durch die Datenbank (und der passiert relativ häufig) wird der Filter aber zurückgesetzt und der User muss sich den Autofilter neu zusammen selektieren.

Unter 2003 habe ich eine Lösung gefunden die aber angeblich nicht unter 2007 laufen soll. Kennt jemand einen Weg wie ich die Filterkriterien auslesen -zwischenspeichern und nach dem "Refresh" wieder herstellen kann? Für den user soll das dann quasi so aussehen als wäre der Autofilter nie ausgeschaltet worden.

Danke und Gruss

Theo

  

Betrifft: AW: Autofilter merken und wiederherstellen von: Josef Ehrensberger
Geschrieben am: 17.01.2012 17:39:46


Hallo Theo,

nutze dafür die Benutzerdefinierte Ansicht.

Sub alsobnichtsgewesenwaere()
  Dim strView As String
  
  strView = "###TEMPVIEW###"
  
  ThisWorkbook.CustomViews.Add strView, True, True
  
  'dein Code
  
  ThisWorkbook.CustomViews(strView).Show
  ThisWorkbook.CustomViews(strView).Delete
End Sub






« Gruß Sepp »



  

Betrifft: AW: Autofilter merken und wiederherstellen von: Fettertiger
Geschrieben am: 18.01.2012 17:11:19

Hallo Sepp,

der Code ist super - jedenfalls funktioniert er in einer vereinfachten Arbeitsmappe einwandfrei.

In meiner "echten" Arbeitsmappe habe ich den Code leider nicht zum laufen bekommen.
Es gab dabei zwei Probleme:

Bei gesetztem Freeze Panes wurden bei mir Daten in falsche Spalten geschrieben.
=> Dieses Problem habe ich jetzt so gelöst, dass ich vor der Erzeugung der Custom View Freeze Panes aussschalte, und nach dem Löschen der Custom View die Fenster neu "einfriere.

Sub alsobnichtsgewesenwaere()
    Dim strView As String
    ActiveWindow.FreezePanes = False
    strView = "###TEMPVIEW###"
    ThisWorkbook.CustomViews.Add strView, True, True

    'mein Code
    With ActiveSheet
    If .AutoFilterMode Then
        If .FilterMode Then
            .ShowAllData
        End If
    End If
    End With

    'noch mehr Code
    

    ' Ende von meinem Code

    ThisWorkbook.CustomViews(strView).Show
    ThisWorkbook.CustomViews(strView).Delete
    ActiveSheet.Range("C2").Select
    ActiveWindow.FreezePanes = True

End Sub
Viel Schwerwiegender ist mein zweites Problem. Durch Stundenlangen Rumprobieren, konnte ich das jetzt soweit eingrenzen:
Gibt es im Workbook noch weitere Tabellen (womöglich ebenfalls mit Autofilter), dann wird die Custom View nicht gezogen. Kopiere ich die zu filternde Tabelle aber in ein neues Workbook funktioniert das Makro einwandfrei.

Wie kann man das problem so lösen, dass nur der Filter für das aktive Worksheet "gemerkt" wird.

Danke und Gruss

Theo


  

Betrifft: AW: Autofilter merken und wiederherstellen von: Fettertiger
Geschrieben am: 18.01.2012 18:46:25

Hallo Nochmal,

das problem war so trivial, da hätte ich vorher drauf kommen können:
Es gab noch mehrere "versteckte" Tabellen mit Blattschutz. Nach entfernen des Blattschutzes funzt das makro ein paar mal wunderbar.

Jetzt habe ich aber noch ein neues Problem.

Der Filter wird zwar wieder hergestellt - aber irgendwie nicht angewendet. Klickt man auf das Filtesymbol im Autofilter sind die Werte richtig ausgewählt - die Werte sind auch wirklich in der Tabelle enthalten, aber trotzdem sind auch Werte sichtbar die nicht im Filter enthalten sind. Also gerade so, als ob die Werte nachträglich hinzugefügt wurden.

Hat jemand eine Idee?

Gruss

Theo


Beiträge aus den Excel-Beispielen zum Thema "Autofilter merken und wiederherstellen"