2017-12-14 9 views
0

현재 일부 코드를 최적화하려고합니다. 현재, 전체 실행 시간이 상당히 느려지는 ActiveWorkbook.RefreshAll을 사용합니다. 실제로는 통합 문서에서 두 개의 워크 시트 만 새로 고쳐야합니다. Worksheet("Name").RefreshAll과 같은 기능이 있습니까? 나는 .calculate에 대해 알고 있지만 주어진 피벗 시트뿐만 아니라 피벗 테이블도 업데이트 할 것이라고 생각하지 않습니다.워크 시트 ("이름"). 새로 고침?

감사

+0

가능한 중복 [여기] (https://stackoverflow.com/questions/154434/how-do-you-get-excel-to-refresh-data-on-sheet-from-within-vba) . –

답변

1

왜 통합 문서를 통해, 그 특정 시트에하지 루프, 는 피벗 테이블을 새로 계산? 표가 동일한 시트에 없으면 "각 시트"루프 대신에 피벗 테이블을 반복하고 그런 식으로 새로 고침하는 코드를 조정할 수 있습니다.

Sub t() 
Dim ws As Worksheet 
Dim pvt As PivotTable 

For Each ws In ActiveWorkbook.Worksheets 
    If ws.Name = "Sheet4" Or ws.Name = "Sheet2" Then 
     ws.Calculate 
     For Each pvt In ws.PivotTables 
      pvt.RefreshTable 
     Next pvt 
    End If 
Next ws 

End Sub 
+0

확실히 더 효율적인 경로 인 배트맨에게 감사드립니다! –