Solved

Updating Pivot Table within VBA

Posted on 2016-10-17
5
56 Views
Last Modified: 2016-10-18
All,

I have the following code as part of a bigger routine. The whole routine goes through a list of files and opens each one to copy out some data into a consolidated file. The data to be copied is the result of a Pivot Table so the pivot table needs to be refreshed.

The particular field in the Source Data has 4 options (EPP, ESP, PSS and (blank)) and I want to filter the PT to show only ESP. However, the source data may not have all options from the outset; ESP is almost definite and blank is more than likely but the other two are less likely now but are likely to be added at some point in the future. The field is a spend type and as each project gets into later stages the spend types will occur. When creating the pivot, if the other options are not available I cannot create the filter but on each refresh I need to check that the filter is still correct. The code below is taken from the recorded script of applying the filter to a project that I knew had all 4 spend types and then amended it.

I imagine I need the On Error line to allow the script to continue without falling over when the PT Field doesn't include the variable that I am trying to make Visible/Hidden. From previous work I understand the "On Error Resume Next" will enable the script to continue for all errors so I only need it once; or do I need to split the "With...End With" into 4 blocks to check each field option and put the On Error before each block of code. In addition, how do I reset the "Error flag" so that any errors after these lines are captured and potentially stop the code running?

As always, assistance is much appreciated.

Many thanks
Rob H

On Error Resume Next
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
With ActiveSheet.PivotTables("PivotTable1").PivotFields("EPP/ESP")
         .PivotItems("ESP").Visible = True
         .PivotItems("EPP").Visible = False
         .PivotItems("PSS").Visible = False
         .PivotItems("(blank)").Visible = False
End With

Open in new window

0
Comment
Question by:Rob Henson
  • 2
  • 2
5 Comments
 
LVL 50

Expert Comment

by:Rgonzo1971
ID: 41847727
HI,

1 You only need it once

and capture errors again use
On Error Goto 0 ' normal error handling
'or
On Error Goto ErrorHandler 'userdefined

Open in new window

Regards
1
 
LVL 18

Expert Comment

by:xtermie
ID: 41847848
On Error Resume Next would also work ok but there will be no error capturing
0
 
LVL 33

Author Comment

by:Rob Henson
ID: 41848026
@xtermie - "On Error Resume Next" is what I already have so that it ignores the potential errors caused when filtering the pivot table for values that don't exist.

@Rgonzo - I want to reset the "Error Capture" after the pivot refresh so that any further errors are captured. Will using "On Error Goto 0" work, without causing an error of its own as I don't have a line 0 for it to goto.

Thanks
Rob
0
 
LVL 50

Accepted Solution

by:
Rgonzo1971 earned 500 total points
ID: 41848051
it does not create an error
On Error Resume Next
ActiveSheet.PivotTables("PivotTable1").PivotCache.Refresh
With ActiveSheet.PivotTables("PivotTable1").PivotFields("EPP/ESP")
         .PivotItems("ESP").Visible = True
         .PivotItems("EPP").Visible = False
         .PivotItems("PSS").Visible = False
         .PivotItems("(blank)").Visible = False
End With
On Error Goto 0

Open in new window

for reference
https://msdn.microsoft.com/en-us/library/5hsw66as.aspx
0
 
LVL 33

Author Closing Comment

by:Rob Henson
ID: 41848113
Thank you.
0

Featured Post

Industry Leaders: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

A little background as to how I came to I design this code: Around 5 years ago I designed an add-in that formatted Excel files to a corporate standard, applying different cell colours and font type depending on whether the cells contained inputs,…
A simple tool to export all objects of two Access files as text and compare it with Meld, a free diff tool.
The viewer will learn how to use the =DISCRINV command to create a discrete random variable, use this command to model a set of probabilities and outcomes in a Monte Carlo simulation, and learn how to find the standard deviation of a set of probabil…
This Micro Tutorial demonstrates in Microsoft Excel how to consolidate your marketing data by creating an interactive charts using form controls. This creates cool drop-downs for viewers of your chart to choose from.

713 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question