Avatar billede brynil Nybegynder
18. september 2004 - 15:34 Der er 23 kommentarer og
1 løsning

Autofilter aktivt - men for hvilken kolonne ?

Jeg forsøger at finde en løsning i et ark ved at prøve mig frem med diverse filtre.
Så kom jeg i tanke om hvor irriteret jeg altid har været ved ikke at kunne se i hvilke kolonner jeg har ændret filter.

Jeg ku godt bruge en metode til fx. at farve cellen (dropdown) gul når filteret var forskelligt fra 'Alle'.

Hvordan fanger man en ændring i valg af filter? Jeg kan umiddelbart kun få en reaktion når jeg specifikt ændrer i en celleværdi.

Måske er det svært at få til at fungere sikkert. Gerne kommentarer hvis nogen har erfaring med det. Jeg har ikke kunnet finde en indbygget løsning, men måske den er der?

På forhånd tak!
Avatar billede sjap Praktikant
18. september 2004 - 16:26 #1
Indsæt nedenstående ved højreklik på fanebladet og vælg Vis programkode. Den øverste celle i den valgte kolonne får farven gul.

Private Sub Worksheet_Calculate()
  Dim flt As Filter
  Dim intCol As Integer
  For Each flt In ActiveSheet.AutoFilter.Filters
      intCol = intCol + 1
      If flt.On Then
        Cells(1, intCol).Interior.ColorIndex = 6
      Else
        Cells(1, intCol).Interior.ColorIndex = xlColorIndexNone
      End If
  Next flt
End Sub
Avatar billede brynil Nybegynder
18. september 2004 - 17:12 #2
Kom kommentaren ikke igennem.. så prøver jeg igen!

Der er ingen reaktion med Ws_Calculate men fungerer med Ws_Change, som ikke er hensigtsmæssig. Har du en idé ? (AutoCalculate er sat til On)
Avatar billede sjap Praktikant
18. september 2004 - 17:19 #3
Det fungerer fint her. Det virker IKKE, hvis det bliver sat ind i et generelt modul. Det skal indsættes som jeg beskrev (ellers virker det ikke her, men du kan selvfølgelig prøve dig frem).
Avatar billede brynil Nybegynder
18. september 2004 - 17:27 #4
Øv - den ville jeg ellers gerne have til at virke.

Har gjort som du skriver. Kan det være Excel2003 der er anderledes?
Avatar billede sjap Praktikant
18. september 2004 - 17:30 #5
Lige for en god ordens skyld, så har du kaldt sub'en for Worksheet_Calculate (og ikke Ws_Calculate)?
Avatar billede brynil Nybegynder
18. september 2004 - 17:39 #6
Altså - det ark jeg har siddet og arbejdet med stammer fra Xml. Det må tilsyneladende blive betragtet anderledes mht Calculate for jeg har lige prøvet med en simpel opstilling i andet ark, og det virker sør'me.

Det er bare alletiders. Tak for hjælpen sjap!

Hvis du ved hvorfor xml behandles anderledes, så må du gerne beskrive det. Måske der er andre ting man bør være opmærksom på.
Avatar billede sjap Praktikant
18. september 2004 - 17:44 #7
Jeg kender desværre ikke noget til XML. Måske opfattes XML som en slags objekter, og ikke som regneark, og derfor virker worksheet-hændelserne ikke.

Måske findes der en slags XML_Calculate hændelse? Det kunne du evt. prøve at lede efter:
Avatar billede brynil Nybegynder
18. september 2004 - 17:45 #8
Xml medfører at mine data er placeret i en liste. Kan også være årsagen.
Avatar billede sjap Praktikant
18. september 2004 - 17:51 #9
Måske findes der en XML kategori på Eksperten, hvor der sikkert findes nogen genier, der også ved noget om Excel.
Avatar billede brynil Nybegynder
18. september 2004 - 17:55 #10
Det gør der sikkert, men dette er en undtagelse, så jeg venter og ser om der dukker noget op inden jeg (måske) får brug for det. Det vigtigste er at vide det tilsyneladende er  anderledes!
Avatar billede sjap Praktikant
18. september 2004 - 17:57 #11
:0)
Avatar billede brynil Nybegynder
19. september 2004 - 11:52 #12
to:
Det virker helt som det skal, når der bare er placeret en vilkårlig beregningsfunktion i arket, fx. en SUM(etellerandet).
Avatar billede sjap Praktikant
19. september 2004 - 12:20 #13
Dvs. den virker ikke, hvis der ikke er noget til at starte den. Der kan man bare se! Der er stadig plads til overraskelser!
Avatar billede brynil Nybegynder
19. september 2004 - 12:26 #14
Ja ja - nu ikke så sarkastisk ;-)
Men det er jo ret nærliggende!
Avatar billede brynil Nybegynder
19. september 2004 - 12:35 #15
Forøvrigt, når man skal aktivere Ws_Calculate skal det jo ske i selve arket. Ved du om man kan få det til at virke fra en menu (person.xls) hvis man (kan) skrive koden ind på arket fra en anden makro?
Avatar billede sjap Praktikant
19. september 2004 - 13:31 #16
Jeg tror ikke helt jeg forstår, hvad det er du spørger om. Vil du lave den ovenstående funktion, så den aktiveres fra et menupunkt?
Avatar billede brynil Nybegynder
19. september 2004 - 14:02 #17
Ja - men _Calculate driller fortsat. Det ser ud til, at en SUM() SKAL have fat i en af de kolonner jeg skal arbejde med. Placerer jeg den længere væk, aktiveres _Calculate ikke. Ved du noget om hvordan _Calculate arbejder?

Jeg kan smide koden ind i et aktivt ark med denne sub. Så skal jeg ha prøvet med en Menu senere.

Sub AddWorkbookEventProc()
Dim StartLine As Long

With ActiveWorkbook.VBProject.VBComponents("Ark1").CodeModule
StartLine = .CreateEventProc("Calculate", "Worksheet") + 1

.InsertLines StartLine, _
"Dim flt As Filter" & vbCrLf & _
"Dim intCol As Integer" & vbCrLf & _
"    For Each flt In ActiveSheet.AutoFilter.Filters" & vbCrLf & _
"        intCol = intCol + 1" & vbCrLf & _
"        If flt.On Then" & vbCrLf & _
"            Cells(1, intCol).Interior.ColorIndex = 6" & vbCrLf & _
"        Else" & vbCrLf & _
"            Cells(1, intCol).Interior.ColorIndex = xlColorIndexNone" & vbCrLf & _
"        End If" & vbCrLf & _
"    Next flt"
End With

End Sub
Avatar billede brynil Nybegynder
19. september 2004 - 14:05 #18
Jeg vil gerne undgå at ha en SUM() til at ligge og rode i de tal der skal arbejdes med, og ku jeg helt undgå den ville det være fint. Hvis det fungerer uden SUM() eller tilsvarende hos dig, ku det tyde på at jeg kan ændre en indstilling somewhere!
Avatar billede sjap Praktikant
19. september 2004 - 14:07 #19
Det forstår jeg ikke. Så vidt jeg ved, så sker hændelsen Calculate når en celle på arket (gen)beregnes (hvor hændelse Change sker når værdien i en celle ændres - dog IKKE hvis det er som resultat af en beregning).
Avatar billede sjap Praktikant
19. september 2004 - 14:10 #20
Jeg havde også lavet nogle beregnede data i mit testark - derfor virkede det her. Når jeg fjerner dem sker Calculate ikke!
Avatar billede brynil Nybegynder
19. september 2004 - 14:12 #21
Kan du få det til at fungere med beregninger et eller andet obskurt sted på arket, hvor det ikke generer?
Avatar billede sjap Praktikant
19. september 2004 - 14:17 #22
Jeg kan få det til at virke, ved at skrive =B2 lang ude til højre i regnearket. B2 kan være en vilkårlig celle af dem, der indgår i filtreringen. Hvis cellen ikke indgår i filtreringen, skal cellen ikke beregnes, og så sker hændelsen Calculate ikke.
Avatar billede brynil Nybegynder
19. september 2004 - 14:21 #23
Perfekt (næsten da!). Bare ærgerligt man skal analysere på arket og lægge ekstra kode ind. Men det kan man jo være nødt til.

Takker så meget for hjælpen, sjap!
Avatar billede sjap Praktikant
19. september 2004 - 14:25 #24
Det vigtigste er at det virker. Men det er selvfølgelig lidt irriterende, at man ikke kan klare sig uden hjælpemidler - men sådan er det altså en gang imellem i Excel :0)
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