Thread: simplify code
View Single Post
  #4   Report Post  
Posted to microsoft.public.excel.programming
Avi Avi is offline
external usenet poster
 
Posts: 29
Default simplify code

'you can also try this modular approach - (untested)

Public sht60DTrnd As Worksheet
Public shtMonthTrnd As Worksheet
Public shtUsers As Worksheet
Public shtCT60Days As Worksheet
Public shtDestMix60D As Worksheet

'This is the main function and should be called first
Sub refresh_Charts()

Dim arrUsers As Variant
Call setSheetNames
arrUsers = shtUsers.Range("H10:H13")

Application.ScreenUpdating = False

Call ClearFilters(sht60DTrnd, "PivotTable1")
Call ApplyFilter(sht60DTrnd, "PivotTable1", arrUsers)

Call ClearFilters(shtMonthTrnd, "PivotTable1")
Call ApplyFilter(shtMonthTrnd, "PivotTable1", arrUsers)

Call ClearFilters(shtCT60Days, "PivotTable1")
Call ApplyFilter(shtCT60Days, "PivotTable1", arrUsers)

Call ClearFilters(shtDestMix60D, "PivotTable1")
Call ApplyFilter(shtDestMix60D, "PivotTable1", arrUsers)


shtUsers.Select
Application.ScreenUpdating = True

End Sub

' Procedure to set all sheet names
Sub setSheetNames()

Set sht60DTrnd = Sheets("60D_Trend")
Set shtMonthTrnd = Sheets("Month_Trend")
Set shtUsers = Sheets("User")
Set shtCT60Days = Sheets("CT_60Days")
Set shtDestMix60D = Sheets("DestMix_60D")

End Sub

' Procedure to clear all filters in selected pivot table
Sub ClearFilters(shtObj As Worksheet, strPvtName As String)

shtObj.Select
For Each Field In shtObj.PivotTables(strPvtName).PivotFields
Field.ClearAllFilters
Next

End Sub

' Procedure to apply filters in selected pivot table
Sub ApplyFilter(shtObj As Worksheet, strPvtName As String, arrUsers As
Variant)

shtObj.Select
With shtObj.PivotTables(strPvtName)
.PivotFields("Program").CurrentPage = arrUsers(0)
.PivotFields("Origin").CurrentPage = arrUsers(1)
.PivotFields("DestRegion ").CurrentPage = arrUsers(2)
.PivotFields("LSP").CurrentPage = arrUsers(3)
End With

End Sub



On Feb 3, 9:17*pm, JE McGimpsey wrote:
Untested:

* * Public Sub refresh_Charts()
* * * * Dim ws As Worksheet
* * * * Dim vUsers As Variant
* * * * Dim vTables As Variant
* * * * Dim i As Long

* * * * vTables = Array("Program", "Origin", "DestRegion", "LSP")
* * * * With Worksheets("User")
* * * * * * vUsers = .Range("H10:H13").Value
* * * * * * For Each ws In Worksheets(Array("60D_Trend", _
* * * * * * * * * * "Month_Trend", "CT_60Days", "DestMix_60D"))
* * * * * * * * With ws.PivotTables("PivotTable1")
* * * * * * * * * * For i = 0 To 3
* * * * * * * * * * * * With .PivotFields(vTables(i))
* * * * * * * * * * * * * * .ClearAllFilters
* * * * * * * * * * * * * * .CurrentPage = vUsers(1, i + 1)
* * * * * * * * * * * * End With
* * * * * * * * * * Next i
* * * * * * * * End With
* * * * * * Next ws
* * * * * * .Select
* * * * End With
* * End Sub

In article ,

*C02C04 wrote:
I'm developing a report and have put some very simple codes together. Can
someone help to simplify?