Avatar billede lineriber Praktikant
08. april 2014 - 15:32 Der er 1 kommentar og
1 løsning

VBA: PivotItem værdi større end eller lig med celle værdi

Hej eksperter

Jeg har problemer med en VBA kode i excel 2010 engelsk version.
- håber I kan hjælpe.

1) I én fane har jeg en celle der angiver en periode.
2) I en anden fane har jeg en pivottabel som jeg ønsker blive begrænset til kun at vise perioder der er mindre end eller lig med perioden i pkt 1.

VBA koden er lavet som et WorksheetChange event, og skal dermed indtræffe når cellen i pkt 1 blive ændret.

Koden virker fint på alle perioder op til og med periode 9. Men når jeg vælger periode 10, så bliver den behandlet som periode 1!
Hvis jeg går ind i pivottabellen og kigger efter hvilken værdi der er sat i pivottabelitems label fileteret, så står der godtnok 10, og hvis jeg herefter trykker OK, så ændrer pivottabellen sig også.

Min mistanke er at når periode ændres via VBA koden, så bliver den behandlet som tekst og ikke tal, og dermed bliver 10 mindre end 2! Men det er kun en mistanke.

Er der nogen der kan hjælpe mig videre?

Koden ser ud som nedenfor:


Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Range(Target.Address), Range("B1")) Is Nothing Then
    Worksheets("PIVOT").PivotTables("PivotTableInternal").PivotFields("Period").ClearAllFilters
    Worksheets("PIVOT").PivotTables("PivotTableInternal").PivotFields("Period").PivotFilters.Add _
        Type:=xlCaptionIsLessThanOrEqualTo, Value1:=Format(Sheets("Comparison").Range("B1").Value, "0")
           
    End If
       
End Sub
Avatar billede lineriber Praktikant
11. april 2014 - 09:36 #1
Er der ikke nogen der kan hjælpe?
Avatar billede lineriber Praktikant
28. april 2014 - 12:19 #2
Jeg har fået hjælp fra anden side.
Problemet opstår fordi at cellen bliver formateret som en tekst:
Value1:=Format(Sheets("Comparison").Range("B1").Value, "0")

Den nye kode som virker er som følger:

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Range(Target.Address), Range("B1")) Is Nothing Then
    Worksheets("PIVOT").PivotTables("PivotTableInternal").PivotFields("Period").ClearAllFilters
    Worksheets("PIVOT").PivotTables("PivotTableInternal").PivotFields("Period").PivotFilters.Add _
        Type:=xlCaptionIsLessThanOrEqualTo, Value1:= sheets("Comparison").Range("B1").Value
           
    End If
       
End Sub
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

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