ExcelBanter

ExcelBanter (https://www.excelbanter.com/)
-   Excel Programming (https://www.excelbanter.com/excel-programming/)
-   -   Set PivotItem using counter (https://www.excelbanter.com/excel-programming/347174-set-pivotitem-using-counter.html)

CinqueTerra

Set PivotItem using counter
 
Scenario: User inputs a month in a cell with range name "period". I need the
Pivot Table to show all months less than or equal to "period". Is there a
way to use a counter to set the visible property of PivotItem? My code:

Dim maxRange As Integer
Dim count As Integer
Dim strPeriod As String

Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem

Set pt = Sheets("Pivot").PivotTables("pvtMain")
Set pf = pt.PivotFields("PERIOD_NUMBER")

For Each pi In pf.PivotItems
pi.Visible = True
Next pi

maxRange = Range("period").Value + 1

For count = maxRange To 12
strPeriod = count
If pi.Name = strPeriod Then
pi.Visible = False
End If
Next count


CinqueTerra

Set PivotItem using counter
 
To answer my own questions - if anybody else cares :-)

Dim maxRange As Integer
Dim count As Integer
Dim i As Integer

Dim Periods As Variant
Periods = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11")

Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem

Set pt = Sheets("Pivot").PivotTables("pvtMain")
Set pf = pt.PivotFields("PERIOD_NUMBER")

Application.Calculation = xlManual

pt.RefreshTable

pf.AutoSort xlManual, "PERIOD_NUMBER"

For Each pi In pf.PivotItems
pi.Visible = True
Next pi

maxRange = Range("period").Value + 1

For count = maxRange To 11
i = count - 1

With pf
.PivotItems(CStr(Periods(i))).Visible = False
End With

Next count

"CinqueTerra" wrote:

Scenario: User inputs a month in a cell with range name "period". I need the
Pivot Table to show all months less than or equal to "period". Is there a
way to use a counter to set the visible property of PivotItem? My code:

Dim maxRange As Integer
Dim count As Integer
Dim strPeriod As String

Dim pt As PivotTable
Dim pf As PivotField
Dim pi As PivotItem

Set pt = Sheets("Pivot").PivotTables("pvtMain")
Set pf = pt.PivotFields("PERIOD_NUMBER")

For Each pi In pf.PivotItems
pi.Visible = True
Next pi

maxRange = Range("period").Value + 1

For count = maxRange To 12
strPeriod = count
If pi.Name = strPeriod Then
pi.Visible = False
End If
Next count



All times are GMT +1. The time now is 04:28 PM.

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