Spitzfindig: Autofilter store/restore
05.03.2009 20:05:40
Renee
Hi Björn,
Ich bin zwar nur VBA-Beginner, trotzdem geb ich dir hier mal ne Vorlage um den Autofilter zu speichern und wiederherzustellen. Bei deinem VBA-Kentnissen wirst du es dann sicher schaffen, alles einzublenden deine speicherfressenden INSTR-Aktionen durchzuführen und nachher darfst du ihn mit dem Restore-Makro wiederherstellen. Aber Achtung: Du musst noch den Tabellennamen anpassen, nicht dass es dann heisst: Funzt leider nicht..., obwohl ich alles verstehe...
Option Explicit
Public ws As Worksheet
Public filterArray()
Public currentFiltRange As String
Sub StoreCurrentFilters()
Dim fx As Long
Set ws = Worksheets("Sheet1")
With ws.AutoFilter
currentFiltRange = .Range.Address
With .Filters
ReDim filterArray(1 To .Count, 1 To 3)
For fx = 1 To .Count
With .Item(fx)
If .On Then
filterArray(fx, 1) = .Criteria1
If .Operator Then
filterArray(fx, 2) = .Operator
filterArray(fx, 3) = .Criteria2
End If
End If
End With
Next
End With
End With
End Sub
Sub RestoreFilters()
Dim lxC
Set ws = Worksheets("Sheet1")
ws.AutoFilterMode = False
For lxC = 1 To UBound(filterArray(), 1)
If Not IsEmpty(filterArray(lxC, 1)) Then
If filterArray(lxC, 2) Then
ws.Range(currentFiltRange).AutoFilter field:=lxC, _
Criteria1:=filterArray(lxC, 1), _
Operator:=filterArray(lxC, 2), _
Criteria2:=filterArray(lxC, 3)
Else
ws.Range(currentFiltRange).AutoFilter field:=lxC, _
Criteria1:=filterArray(lxC, 1)
End If
End If
Next
End Sub
GreetZ Renée