25. maj 2004 - 14:45
Der er
4 kommentarer og
1 løsning
Autofilter status
Jeg bruger autofilter til at sortere en adresseliste og det fungerer fint.
Nu har jeg så lavet en makro som hhv. viser/skjuler udvalgte kolonner og når jeg kører makroen så "forsvinder" filtreringen, så det jeg har brug for er altså at registrere Autofilter status inden makroafviklingen så jeg kan "reetablere" autofiltret efter makroafviklingen.
Altså:
Sub MinMakro
"registrer Autofilter"
"Skjul/vis kolonner"
"reetabler autofilter"
End sub
Nogen der kan hjælpe?
På forhånd tak :-)
Sakser da bare igen....
The following example stores the address and filtering criteria for the current filtering and then applies new filters.
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
To create an AutoFilter object for a worksheet, you must turn autofiltering on for a range on the worksheet either manually or using the AutoFilter method of the Range object. The following example uses the values stored in module-level variables in the previous example to restore the original autofiltering to the Crew worksheet.
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