Link to home
Start Free TrialLog in
Avatar of David Edwards
David Edwards

asked on

VBA Pivot Field Filter Error

Hi there, I have written a VBA procedure (well multiple as its very large code) which basically re-creates a large number of Pivot tables from the source data sheet so as the source data changes, I delete & rebuild the Pivots.  All of this is working fine.  

However, in the source data, there is a column called "Region" and there are 5 main regions consisting of CEE, DACH, UK/IE, NL & CENTER.  I have noticed towards the very end of coding, that in some cases, this approach is generating an error and its where the source data for the Pivot, does not actually contain a specific region

For example, if I copy the VBA for the multiple Pivots I created for NL region, I have been setting the region filters in VBA as follows:-

'Add Region Filter
With .PivotFields("Region")
        .PivotItems("CEE").Visible = False
        .PivotItems("DACH").Visible = False
        .PivotItems("UK/IE").Visible = False
        .PivotItems("CENTER").Visible = False
        .PivotItems("(blank)").Visible = False
End With

The above works fine so long as in the source data for the Pivot I am creating, all of the values above are present, if for example, in the Pivot source data, there is no data for "UK/IE", the VBA throws an error, rather than simply skipping over the appropriate line of code.

Is there an easy / quick resolution sticking with the above structure, to get VBA to ignore a filter request if the data does not exist in the source ( I do not really want to re write all of the code - it really is quite massive) ?

Thanks in advance
Dave
ASKER CERTIFIED SOLUTION
Avatar of Shums Faruk
Shums Faruk
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of David Edwards
David Edwards

ASKER

thanks - that seems simple enough :)  - will the "Goto 0" part work ok if this filter logic appears multiple times within a proc?
You need to start with Error Resume Next before every loop and end with On Error Goto 0
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
thanks this worked perfectly and I will check the rest of my code and add in Error Resume Next before every loop and end with On Error Goto 0
Have you noted my comment.

When you use "On Error Resume Next" to skip the Pivot Filter, the Pivot Table will not change and will still show the data from the previous refresh; ie one of the Regions that does exist in that Pivot.
No comment has been added to this question in more than 14 days, so it is now classified as abandoned.

I have recommended this question be closed as follows:
Split: Shums (ID: 42052688) and Rob Henson (ID: 42052688)

If you feel this question should be closed differently, post an objection and a moderator will read all objections and then close it as they feel fit. If no one objects, this question will be closed automatically the way described above.