Avatar billede fobian Nybegynder
23. januar 2004 - 16:16 Der er 4 kommentarer og
2 løsninger

VBA-kode som viser valgt kriterie i celle i autofilter

Jeg har et regneark med et autofilter. Jeg anvender denne kode til at ændre kriteriet for filteret:

    Selection.AutoFilter field:=1, Criteria1:="6"

Hvis brugeren går ind og ændrer filtreringen i autofilteret, har jeg behov for at kunne aflæse det valgte criteria1. Jeg kan ikke lige finde syntaksen til at finde værdien af denne egenskab. Kan nogen hjælpe med det?
Avatar billede fobian Nybegynder
23. januar 2004 - 18:19 #1
Har selv fundet ud af det - lukker igen :-)
Avatar billede fobian Nybegynder
23. januar 2004 - 18:20 #2
luk
Avatar billede mhp_dk Nybegynder
23. august 2006 - 08:43 #3
Jeg har sammme problem, kan du huske hvad du gjorde ?
Avatar billede fobian Nybegynder
23. august 2006 - 13:10 #4
Jeg fandt dette eksempel, som jeg har rettet lidt til i min egen kode:

Sub FindFilter()
'The following example sets a variable to the value of the Criteria1 property of the filter for the first column in the filtered range on the Crew worksheet.

With Worksheets("Crew")
    If .AutoFilterMode Then
        With .AutoFilter.Filters(1)
            If .On Then c1 = .Criteria1
        End With
    End If
End With
MsgBox c1
End Sub

Håber du kan bruge det - Ellers er du velkommen til at vende tilbage :o)
Avatar billede mhp_dk Nybegynder
23. august 2006 - 21:22 #5
Jeg kan ikke få det køre, der sker intet

Det jeg ville var at få værdien af criteria1 skrevet i et tilfældigt felt (f.eks. G1)
Avatar billede fobian Nybegynder
24. august 2006 - 09:45 #6
Jeg har lavet denne funktion, som du kan kopiere til et kodemodul i VBA:

Function FindFilter(ArkNavn, FilterNr) As String
    With Worksheets(ArkNavn)
        If .AutoFilterMode Then
            With .AutoFilter.Filters(FilterNr)
                If .On Then
                    c1 = .Criteria1
                Else
                    c1 = ""
                End If
            End With
        End If
        If c1 <> "" Then
            FindFilter = Right(c1, Len(c1) - 1)
        Else
            FindFilter = c1
        End If
    End With
End Function

Derefter kopierer du formlen nedenfor til f.eks. celle G1 i dit regneark.

=findfilter("Ark1";1)&VENSTRE(SUBTOTAL(3;'Ark1'!D:D);0)

Funktionen findfilter indeholder variabler for arknavn og kolonne i autofilteret. Så hvis dit ark hedder Data ændrer du bare Ark1 til Data. Hvis du skal bruge valg fra kolonne 2 i dataområdet ændrer du bare 1 til 2.
Den næste del af formlen anvendes til at få aktiveret beregneren i regnearket og opdatere funktionen. Her skal du også ændre arknavnet til det ønskede og du skal ændre D:D til at være bogstavet for den første kolonne i dit dataområde. Så hvis dine data starter fra kolonne A skriver du A:A.

Nu vil cellen opdateres og vise det filter der er valgt, hver gang der ændres valg i autofilteret. :o)
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
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

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