2016-12-15 143 views
0

數據源將經常更改。在我刷新數據透視表後,我有以下代碼來更新成績透視項目字段。有時候4級是可用的,有時不是。基本上,如果4級是可用的,我希望它被選中,如果它不可用,那麼可以選擇所有的字段。出於某種原因,當我運行它時,它停在else行上。有什麼建議麼?帶有數據透視表的Excel中的VBA代碼

ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade").ClearAllFilters 

If IsError(ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade").CurrentPage = "4") Then 
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade").CurrentPage = _ 
    "(All)"  
Else 
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade").CurrentPage = "4"   
End If 
+0

您是否在下面的答案中嘗試了代碼?任何反饋將不勝感激 –

回答

0

您不能捕獲PivotField("Grade").CurrentPage誤差IsError

嘗試下面的代碼:

ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade").ClearAllFilters 

On Error Resume Next 
ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade").CurrentPage = "4" 

If Err.Number <> 0 Then 
    ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade").CurrentPage = _ 
    "(All)" 
    On Error GoTo 0 
End If 

注意:如果您使用With語句,你可以清理你的代碼。在您的代碼中,您可以使用With ActiveSheet.PivotTables("PivotTable1").PivotFields("Grade")

+0

它工作的魅力!非常感謝您的幫助和關於使用的建議。 – user7303815

+0

@ user7303815 your'e welcome,請標記爲「答覆」(點擊我帖子旁邊的小** V **) –