Avatar billede stry Nybegynder
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 :-)
Avatar billede bak Forsker
25. maj 2004 - 16:36 #1
sakset fra hjælpen :-)

This example displays the filter status of Sheet1 in a message box.

If Worksheets("Sheet1").FilterMode = True Then
    MsgBox "Filter mode is on"
Else
    MsgBox "Filter mode is off"
End If
Avatar billede bak Forsker
25. maj 2004 - 16:37 #2
Sorry. Jeg burde læse spørgsmålet inden jeg svarede ...:-(
Avatar billede bak Forsker
25. maj 2004 - 16:40 #3
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
Avatar billede stry Nybegynder
28. december 2005 - 12:22 #4
Bak>>
Spørgsmålet er ikke længere aktuelt, men jeg vil gerne give point for din indsats hvis du smider et svar.
Avatar billede bak Forsker
28. december 2005 - 12:49 #5
ok :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester