Excel filter einstellungen ablegen/merken

Hallo ,

Also ich möchte gerne ein Makro schreiben , welches mir alle gesetzten Filter deaktiviert und beim erneuten drücken die vorherig gesetzten Filter wieder einstellt .

soweit das alles deaktiviert und aktiviert wird bin ich schon nur leider fehlt mir die idee/ das wissen wie ich die einstellungen abspeichere um sie dann erneut zu laden und somit bekomme ich einfach nur den filter aktiviert beim erneuten drücken des buttons aber nicht die einstellungen dazu .

hier mal mein code :

'obere teil ist nur im ein button in der symbolleiste zu erstellen .

Const cbName = „Makroleiste“ 'Name der Symbolleiste hier anpassen

Sub Auto_Open()
Makroleiste
End Sub

Sub Makroleiste()

On Error Resume Next
Application.CommandBars(cbName).Delete 'eventuell bestehende Leiste erst löschen
'Commandbar erstellen
Set ccb = CommandBars.Add(cbName)

'Togglebutton (Umschaltfläche) erzeugen. Eine Schaltfläche,
'die über das zugeordnete Makro (OnAction = „EinAus“) gesteuert wird.
Set ccbT = ccb.Controls.Add(msoControlButton)
With ccbT
.Caption = „Filter_an_aus“
.Name = „Filter_an_aus“
.Style = msoButtonIconAndCaption
.FaceId = 352 'Rote Glühbirne
.OnAction = „Filter_an_aus“
.State = msoButtonDown = False
.TooltipText = „Es ist ausgeschaltet!“
End With

ccb.Visible = True 'setzt die Menüleiste auf sichtbar

End Sub

’ hier beginnt der eigentliche Code
Sub Filter_an_aus()
With Application.CommandBars(cbName).Controls(„Filter_an_aus“)
If .State = msoButtonDown Then
.State = (msoButtonDown = False)
.FaceId = 352 'Rote Glühbirne
Application.Calculation = xlCalculationManual
ActiveSheet.Range(„A1“).AutoFilter

Else
.State = (msoButtonDown = True)
.FaceId = 351 'Gelbe Glühbirne
ActiveSheet.AutoFilterMode = False
Application.Calculation = xlCalculationAutomatic
End If
End With
End Sub

Hallo.
Ob man den Filter auslesen kann, ist mir im Moment nicht bewusst, aber.
Warum gehst du nicht den umgekehrten Weg, und setzt den Filter direkt beim wiedereinschalten ?
Die Filterkriterien sind ja bekannt, also :

Sub StelleAutofilterEin()
Selection.Autofilter Field:=Spalte, Criteria:=Ausdruck
EndSub

wobei :
Spalte= Nummer der Spalte
Criteria= eben der Ausdruck des Kriteriums
Das ganze kannst du mit beliebig vielen Spalten machen, und somit den Filter jedesmal neu/gleich setzen.

mfg DpSky

Also ich möchte gerne ein Makro schreiben , welches mir alle
gesetzten Filter deaktiviert und beim erneuten drücken die
vorherig gesetzten Filter wieder einstellt .

Hallo kleiner Reinhauer :smile:),

ich habe jetzt den Code nur überflogen, nein nicht deinen, den nachfolgenden aus, man glaubt es kaum aus der Excelhilfe :smile:)
Scheinbar machen die Codes genau das was du möchtest.
Im ersten werden die kritiereien usw. eingelesen, im zweiten wiederhergestellt.

Schau mal ob du mit dem Code klarkommst.
Es steht auch wichtiger Text bei den Codes, hab ich weggelassen weil man da immer die zeilen manuell umbrechen muß, schau halt mal in deiner Hilfe nach Autofilter…

Gruß
Reinhard

Dim w As Worksheet
Dim filterArray()
Dim currentFiltRange As String

Sub ChangeFilters()

Set w = Worksheets("Crew")
With w.AutoFilter
 currentFiltRange = .Range.Address
 With .Filters
 ReDim filterArray(1 To .Count, 1 To 3)
 For f = 1 To .Count
 With .Item(f)
 If .On Then
 filterArray(f, 1) = .Criteria1
 If .Operator Then
 filterArray(f, 2) = .Operator
 filterArray(f, 3) = .Criteria2
 End If
 End If
 End With
 Next
 End With
End With

w.AutoFilterMode = False
w.Range("A1").AutoFilter field:=1, Criteria1:="S"
End Sub

Sub RestoreFilters()
Set w = Worksheets("Crew")
w.AutoFilterMode = False
For col = 1 To UBound(filterArray(), 1)
 If Not IsEmpty(filterArray(col, 1)) Then
 If filterArray(col, 2) Then
 w.Range(currentFiltRange).AutoFilter field:=col, \_
 Criteria1:=filterArray(col, 1), \_
 Operator:=filterArray(col, 2), \_
 Criteria2:=filterArray(col, 3)
 Else
 w.Range(currentFiltRange).AutoFilter field:=col, \_
 Criteria1:=filterArray(col, 1)
 End If
 End If
Next
End Sub