Meerdere PageField met macro kiezen

Status
Niet open voor verdere reacties.

luus1901

Gebruiker
Lid geworden
21 mei 2009
Berichten
66
Er moet een draaitabel worden opgebouwd waarbij alleen de PageFields die in de Array zijn vermeld getoond mogen worden. Ik heb een deel van de code gevonden in een item uit januari 2010, maar krijg de code niet aangepast zodat het werkt voor mijn doel.
Van het uiteindelijke resultaat moet een apart blad gemaakt worden, maar dat lukt dus ook niet.
Wat doe ik fout en wie kan mij helpen?
Bekijk bijlage Draaitabel velden kiezen.xlsm
 
Ik heb geen flauw idee wat je er uit zou willen hebben. Maak eens een tabelletje met de verwachte uitkomst.
 
Tjee, ik had niet verwacht dat met de grote kennis van VBA in de groep mijn vraag zo onduidelijk zou zijn.
Hoop dat dit meer duidelijk is?
Hier een printcreen van de gewenste uitkomst:
draai2.jpg

Ik weet dat ik deze uitkomst ook met een filter kan bereiken, maar ik wil de draaitabel later nog kunnen uitbreiden.
De code gaat fout op het moment dat y > aantal voorwaarden in de array veld7. Ik weet niet hoe ik dit moet tackelen.
 
Laatst bewerkt:
veld7 als variabele en als veldnaam vind ik niet echt een handige keuze.

Probeer het zo eens
Code:
Sub MaakDraaitabel()
Dim DTCache As PivotCache
Dim DT As PivotTable
Dim DTwb As String
Dim ar, pt
    
Application.ScreenUpdating = False
Set DTCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=Range("A1").CurrentRegion)

Sheets.Add.Name = "Draai2"
ActiveWindow.DisplayGridlines = False

Set DT = ActiveSheet.PivotTables.Add(PivotCache:=DTCache, TableDestination:=Range("A3"))
With DT
    .PivotFields("veld7").Orientation = xlPageField
    .PivotFields("veld5").Orientation = xlPageField
    .PivotFields("veld5").CurrentPage = "(blank)"
    .PivotFields("veld3").Orientation = xlRowField
    .PivotFields("veld1").Orientation = xlDataField
    .TableStyle2 = "PivotStyleLight1"
    .DisplayFieldCaptions = False
End With
     
With DT.PivotFields("Som van veld1")
    .Caption = "Aantal veld1"
    .Function = xlCount
End With
     
ar = Array("4", "8", "10", "15", "16")
On Error GoTo Fout
With DT.PivotFields("veld7")
    For Each pt In .PivotItems
        If IsError(Application.Match(pt.Value, ar, 0)) Then pt.Visible = False
    Next pt
End With
Exit Sub
Fout:
DT.PivotFields("veld7").ClearAllFilters
End Sub
 
VenA,Top. :thumb: Dank je wel.

veld7 als variabele en als veldnaam vind ik niet echt een handige keuze.
Helemaal gelijk, in het echte bestand zijn dit andere variabelen. Ik nam aan dat voor de ervaren VBA kenner het wel duidelijk zou zijn. Mijn fout, zal een volgende keer iets anders kiezen


(heb de ScreenUpdating maar wel weer aangezet ;) )
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan