Avatar billede lineriber Praktikant
22. november 2012 - 09:39 Der er 9 kommentarer og
1 løsning

VBA til at angive Pivot report filter = celle B2

Hej eksperter

Jeg bruger EXCEL 2007.

Jeg har 2 pivottabeller (PivotTable1 og PivotTable2)i ét excel sheet (Sheet1).
Jeg vil gerne i celle B2 kunne skrive et kontonr. og via en VBA kunne angive at Pivot Report Filteret i begge pivottabeller skal være lig med værdien i celle B2.

Nogen der kan hjælpe med en simpel VBA kode på det??

Mvh
Line
Avatar billede xenoxsis Nybegynder
22. november 2012 - 13:24 #1
I dit Sheet skal du indsætte denne funktion:


Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo End_Change
    Dim watchCell As Range
   
    watchCell = Range(<celle>)
    If (Target = watchCell) Then
        ActiveSheet.PivotTables(<pivotnavn>).PivotFields(<pivotfelt>).ClearAllFilters
        ActiveSheet.PivotTables(<pivotnavn>).PivotFields(<pivotfelt>).PivotFilters.Add Type:=xlCaptionEquals, Value1:=watchCell.Value
    End If
End_Change:
End Sub


<celle> er den celle du vil overvåge. Eks.: "B4"
<pivotnavn> er navnet på den pivottabel som du vil sætte filter på. Eks.: "PivotTable1"
<pivotfelt> er navnet på det felt der skal filteres i. Eks.: "konto nr."
Avatar billede xenoxsis Nybegynder
22. november 2012 - 13:26 #2
Ja skal også ændre ActiveSheet til en anden værdi hvis din pivottabel ikke befinder sig i det samme sheet som du laver ændringen i.

Så skriver du: Sheets(<sheetnavn>) i stedet.
Avatar billede lineriber Praktikant
23. november 2012 - 08:47 #3
hmmm, jeg kan ikke få det til at virke....

Jeg har åbnet mig dokument, indskrevet kontonr. i celle C1.
Åbnet Microsoft Visual Basic -> gået til mit sheet hvor pivottabeller er i ("PRINT") -> kopieret din VBA kode ind -> ændret navne på celle, pivotnavn og pivotfelt så VBA'en ser ud som følger:


Private Sub Worksheet_Change(ByVal Target As Range)
   
    On Error GoTo End_Change
    Dim watchCell As Range
   
    watchCell = Range("C1")
    If (Target = watchCell) Then
        ActiveSheet.PivotTables("PivotTable1").PivotFields("CC").ClearAllFilters
        ActiveSheet.PivotTables("PivotTable1").PivotFields("CC").PivotFilters.Add Type:=xlCaptionEquals, Value1:=watchCell.Value
    End If
End_Change:
End Sub

MEN der sker ikke noget når jeg prøver at køre den....og det er også som om at den ikke er tilgængelig til at tilknytte til en knap og jeg kan heller ikke se den under "View Macros" (Alt+F8.

Er der noget jeg har misforstået??
Avatar billede xenoxsis Nybegynder
23. november 2012 - 10:52 #4
Du skal først skrive kontonummeret ind EFTER at du har kopieret koden ind. Det er ikke en makro du skal køre selv (det kan jeg godt lave den om til hvis du vil have det).

Men derimod gør den det at hver gang du ændrer i celle C1, så opdaterer den filteret i din pivottabel automatisk.
Avatar billede lineriber Praktikant
23. november 2012 - 11:02 #5
aha, ok.
Men der sker bare ikke noget når jeg ændre kontonummere i celle C1.... Og jeg har "enable macros" og sat til "automatic calculation"
Er det korrekt at både celle, PivotTables og PivotFields skal angivet med " " om?
Avatar billede lineriber Praktikant
26. november 2012 - 08:37 #6
Hej igen xenoxsis
Kan du gennemskue hvad jeg gør forkert, eller skal jeg sende filen til dig?
Avatar billede xenoxsis Nybegynder
29. november 2012 - 14:38 #7
Send mig arket på xenoxsis@gmail.com og så kigger jeg på det.
Avatar billede lineriber Praktikant
30. november 2012 - 09:40 #8
er hermed gjort :-)
Avatar billede lineriber Praktikant
05. december 2012 - 11:05 #9
Hej Xenoxsis
Har du fået kigget på filen?
Avatar billede lineriber Praktikant
11. januar 2013 - 08:23 #10
Da Xenoxsis endnu ikke har vendt tilbage, lukker jeg spørgsmålet
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