ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Manipulating Pivot Tables With Macros (https://www.excelbanter.com/excel-programming/279833-manipulating-pivot-tables-macros.html)

Mike Barron

Manipulating Pivot Tables With Macros
 
I have been trying to automate a pivot table to produce 2
standard reports from a database in a separate
spreadsheet. There are three field items which differ
between the reports. I have recorded a macro to hide the
fields and another to show them. Looking at the code
produced by these it appears simple to set the VISIBLE
property for the items to either FALSEor TRUE to show or
hide these items but although the code for hiding the
items works the macro gives an error when trying to set
the VISIBLE property to TRUE. The error is:

Run-time error 1004
Unable to setthe Visible property of the PivotItem class

An extract of the affected code is below:

With ActiveSheet.PivotTables("Rupee").PivotFields
("Activity No")
.PivotItems("14").Visible = False
.PivotItems("14.1").Visible = True
End With

Only the second one (14.1) gives the error.
Has anyone else had a similar problem and is there a
solution?

keepITcool

Manipulating Pivot Tables With Macros
 
Mike..

You always need 1 visible item... so do the TRUE before the FALSE.

You're working with a collection object where the KEY is in fact the
string representation of a number...

If you're working in an international environment,you cannot assume the
user is using the the "." as the decimal separator.

Try following to be safe:

With ActiveSheet.PivotTables("Rupee").PivotFields("Acti vitity No")
.PivotItems(CStr(14.1)).Visible = True
.PivotItems(CStr(14)).Visible = False
End With


HTH,

keepITcool

< email : keepitcool chello nl (with @ and .)
< homepage: http://members.chello.nl/keepitcool


"Mike Barron" wrote:

I have been trying to automate a pivot table to produce 2
standard reports from a database in a separate
spreadsheet. There are three field items which differ
between the reports. I have recorded a macro to hide the
fields and another to show them. Looking at the code
produced by these it appears simple to set the VISIBLE
property for the items to either FALSEor TRUE to show or
hide these items but although the code for hiding the
items works the macro gives an error when trying to set
the VISIBLE property to TRUE. The error is:

Run-time error 1004
Unable to setthe Visible property of the PivotItem class

An extract of the affected code is below:

With ActiveSheet.PivotTables("Rupee").PivotFields
("Activity No")
.PivotItems("14").Visible = False
.PivotItems("14.1").Visible = True
End With

Only the second one (14.1) gives the error.
Has anyone else had a similar problem and is there a
solution?



Mike Barron

Manipulating Pivot Tables With Macros
 
I tried this and it still gave the same error. In any case
I have set the international setting to UK so I know
that '.' is a decimal separator.

More help please
-----Original Message-----
Mike..

You always need 1 visible item... so do the TRUE before

the FALSE.

You're working with a collection object where the KEY is

in fact the
string representation of a number...

If you're working in an international environment,you

cannot assume the
user is using the the "." as the decimal separator.

Try following to be safe:

With ActiveSheet.PivotTables("Rupee").PivotFields

("Activitity No")
.PivotItems(CStr(14.1)).Visible = True
.PivotItems(CStr(14)).Visible = False
End With


HTH,

keepITcool

< email : keepitcool chello nl (with @ and .)
< homepage: http://members.chello.nl/keepitcool


"Mike Barron" wrote:

I have been trying to automate a pivot table to produce

2
standard reports from a database in a separate
spreadsheet. There are three field items which differ
between the reports. I have recorded a macro to hide

the
fields and another to show them. Looking at the code
produced by these it appears simple to set the VISIBLE
property for the items to either FALSEor TRUE to show

or
hide these items but although the code for hiding the
items works the macro gives an error when trying to set
the VISIBLE property to TRUE. The error is:

Run-time error 1004
Unable to setthe Visible property of the PivotItem class

An extract of the affected code is below:

With ActiveSheet.PivotTables("Rupee").PivotFields
("Activity No")
.PivotItems("14").Visible = False
.PivotItems("14.1").Visible = True
End With

Only the second one (14.1) gives the error.
Has anyone else had a similar problem and is there a
solution?


.


keepITcool

Manipulating Pivot Tables With Macros
 
Mike

Check to make sure that the FIELD "Rupee" VISIBLE at the moment you set
the items.. else please post a longer snippet.

Note that international setting is a USER option NOT saved with the
workbook.


keepITcool


"Mike Barron" wrote:

I tried this and it still gave the same error. In any case
I have set the international setting to UK so I know
that '.' is a decimal separator.

More help please


Debra Dalgleish

Manipulating Pivot Tables With Macros
 
To prevent the error, set the Sort for the field to Manual. You can do
this in the code, for example:

Sub PivotShowItemResetSort()
'For version 2000 -- show all items in field
'sort is set to Manual to prevent errors, e.g.
'unable to set Visible Property of PivotItem class
'returns sort order to previous setting
Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem
Dim intASO As Integer

Application.ScreenUpdating = False
Application.DisplayAlerts = False
On Error Resume Next
For Each pt In ActiveSheet.PivotTables
For Each pf In pt.VisibleFields
intASO = pf.AutoSortOrder
pf.AutoSort xlManual, pf.SourceName
For Each pi In pf.PivotItems
If pi.Visible < True Then
pi.Visible = True
End If
Next pi
pf.AutoSort intASO, pf.SourceName
Next pf
Next pt
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub


Mike Barron wrote:
I have been trying to automate a pivot table to produce 2
standard reports from a database in a separate
spreadsheet. There are three field items which differ
between the reports. I have recorded a macro to hide the
fields and another to show them. Looking at the code
produced by these it appears simple to set the VISIBLE
property for the items to either FALSEor TRUE to show or
hide these items but although the code for hiding the
items works the macro gives an error when trying to set
the VISIBLE property to TRUE. The error is:

Run-time error 1004
Unable to setthe Visible property of the PivotItem class

An extract of the affected code is below:

With ActiveSheet.PivotTables("Rupee").PivotFields
("Activity No")
.PivotItems("14").Visible = False
.PivotItems("14.1").Visible = True
End With

Only the second one (14.1) gives the error.
Has anyone else had a similar problem and is there a
solution?



--
Debra Dalgleish
Excel FAQ, Tips & Book List
http://www.contextures.com/tiptech.html



All times are GMT +1. The time now is 05:47 PM.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
ExcelBanter.com