2014-10-31 207 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

记录一个宏,看看你会得到什么值? – 2014-10-31 18:28:29

+0

当我这样做时,我得到了ActiveSheet.PivotTables(“PivotTable1”)。PivotFields(“dwm”)。CurrentPage =“1” – 2014-10-31 18:29:25

+0

奇怪的是,一旦我尝试运行代码,记录器创建它给了我同样的错误。 – 2014-10-31 18:30:45

回答

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 
相关问题