[FONT=Courier New][COLOR=darkblue]Option[/COLOR] [COLOR=darkblue]Explicit[/COLOR]
[COLOR=darkblue]Private[/COLOR] [COLOR=darkblue]Sub[/COLOR] Worksheet_PivotTableUpdate([COLOR=darkblue]ByVal[/COLOR] Target [COLOR=darkblue]As[/COLOR] PivotTable)
[COLOR=darkblue]Dim[/COLOR] colPgFlds [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]New[/COLOR] Collection
[COLOR=darkblue]Dim[/COLOR] arrItems() [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]String[/COLOR]
[COLOR=darkblue]Dim[/COLOR] PgFld [COLOR=darkblue]As[/COLOR] PivotField
[COLOR=darkblue]Dim[/COLOR] PvtItm [COLOR=darkblue]As[/COLOR] PivotItem
[COLOR=darkblue]Dim[/COLOR] PgFldCnt [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Long[/COLOR]
[COLOR=darkblue]Dim[/COLOR] MaxColIndx [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Long[/COLOR]
[COLOR=darkblue]Dim[/COLOR] Cnt [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Long[/COLOR]
[COLOR=darkblue]Dim[/COLOR] i [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Long[/COLOR]
[COLOR=darkblue]Dim[/COLOR] j [COLOR=darkblue]As[/COLOR] [COLOR=darkblue]Long[/COLOR]
[COLOR=darkblue]If[/COLOR] [COLOR=darkblue]Not[/COLOR] PrevPageRange [COLOR=darkblue]Is[/COLOR] [COLOR=darkblue]Nothing[/COLOR] [COLOR=darkblue]Then[/COLOR]
[COLOR=darkblue]With[/COLOR] PrevPageRange
Me.Range(Cells(.Rows(1).Row, .Columns(.Columns.Count).Column + 1), _
Cells(.Rows(.Rows.Count).Row, Columns.Count)).ClearContents
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]With[/COLOR]
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]If[/COLOR]
PgFldCnt = ActiveSheet.PivotTables("PivotTable1").PageFields.Count
[COLOR=darkblue]If[/COLOR] PgFldCnt > 0 [COLOR=darkblue]Then[/COLOR]
[COLOR=darkblue]For[/COLOR] [COLOR=darkblue]Each[/COLOR] PgFld [COLOR=darkblue]In[/COLOR] ActiveSheet.PivotTables("PivotTable1").PageFields
colPgFlds.Add PgFld.Name, [COLOR=darkblue]CStr[/COLOR](PgFld.Position)
[COLOR=darkblue]Next[/COLOR] PgFld
[COLOR=darkblue]ReDim[/COLOR] arrItems(1 [COLOR=darkblue]To[/COLOR] PgFldCnt, 1 [COLOR=darkblue]To[/COLOR] 1)
Cnt = 0
MaxColIndx = 0
[COLOR=darkblue]For[/COLOR] i = 1 [COLOR=darkblue]To[/COLOR] PgFldCnt
[COLOR=darkblue]With[/COLOR] ActiveSheet.PivotTables("PivotTable1").PageFields(colPgFlds.Item(CStr(PgFldCnt - i + 1)))
[COLOR=darkblue]If[/COLOR] .AllItemsVisible [COLOR=darkblue]Then[/COLOR]
arrItems(i, 1) = ""
[COLOR=darkblue]Else[/COLOR]
[COLOR=darkblue]For[/COLOR] j = 1 [COLOR=darkblue]To[/COLOR] .PivotItems.Count
[COLOR=darkblue]If[/COLOR] .PivotItems(j).Visible = [COLOR=darkblue]True[/COLOR] [COLOR=darkblue]Then[/COLOR]
Cnt = Cnt + 1
[COLOR=darkblue]If[/COLOR] Cnt > MaxColIndx [COLOR=darkblue]Then[/COLOR]
MaxColIndx = Cnt
[COLOR=darkblue]ReDim[/COLOR] [COLOR=darkblue]Preserve[/COLOR] arrItems(1 [COLOR=darkblue]To[/COLOR] PgFldCnt, 1 [COLOR=darkblue]To[/COLOR] Cnt)
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]If[/COLOR]
arrItems(i, Cnt) = .PivotItems(j).Name
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]If[/COLOR]
[COLOR=darkblue]Next[/COLOR] j
[COLOR=darkblue]If[/COLOR] Cnt = 1 [COLOR=darkblue]Then[/COLOR]
arrItems(i, 1) = ""
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]If[/COLOR]
Cnt = 0
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]If[/COLOR]
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]With[/COLOR]
[COLOR=darkblue]Next[/COLOR] i
[COLOR=darkblue]With[/COLOR] ActiveSheet.PivotTables("PivotTable1").PageRange
.Offset(, .Columns.Count).Resize(UBound(arrItems, 1), UBound(arrItems, 2)).Value = arrItems
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]With[/COLOR]
[COLOR=darkblue]Call[/COLOR] UpdatePrevPageRange
[COLOR=darkblue]Else[/COLOR]
[COLOR=darkblue]Set[/COLOR] PrevPageRange = [COLOR=darkblue]Nothing[/COLOR]
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]If[/COLOR]
[COLOR=darkblue]End[/COLOR] [COLOR=darkblue]Sub[/COLOR]
[/FONT]