2014-10-31 2 views
0

그래서 VBA와 피벗 테이블 필터를 전환하는 데 문제가 있습니다. 이것은 내 코드입니다 :VBA 피벗 테이블 필터

Sub Macro2() 
Sheets("Report").Visible = True 

Sheets("Report").PivotTables("PivotTable1").PivotCache.Refresh 

Sheets("Report").PivotTables("PivotTable1").PivotFields("dwm").ClearAllFilters 
Sheets("Report").PivotTables("PivotTable1").PivotFields("dwm").CurrentPage = "1" 

Sheets("Report").Activate 
End Sub 

나는 "1", 1, 1.0을 사용하여 시도했지만 아무런 행운이 없었습니다. 내가 오류는 다음과 같습니다

"응용 프로그램 정의 또는 개체 정의 오류"

은 어떤 도움에 감사드립니다.

+0

매크로를 기록하고 어떤 가치를 얻었습니까? –

+0

필자가 ActiveSheet.PivotTables ("PivotTable1")을 사용했을 때 PivotFields ("dwm"). CurrentPage = "1" –

+0

이상하게도 레코더가 만든 코드를 실행하려고하면 동일한 오류가 발생합니다. –

답변

0

어떤 이유로 Excel 2013이 여기에서 문제 일 수 있습니다. 다른 사람이이 문제에 부딪치게되면 해결 방법을 찾을 수있었습니다. 필드의 가시성을 편집 할 수있는 루프를 사용했습니다. 해결책은 다음과 같습니다.

Sub CreateReport() 

Sheets("Report").Visible = True 

Sheets("Report").PivotTables("PivotTable1").PivotCache.Refresh 

Sheets("Report").PivotTables("PivotTable1").PivotFields("dwm").ClearAllFilters 

Dim pi As PivotItem 

    For Each pi In Sheets("Report").PivotTables("PivotTable1").PivotFields("dwm").PivotItems 
     If pi.Value = 0 Then 

     pi.Visible = False 

     End If 

    Next pi 

Sheets("Report").Activate 

End Sub