2012-12-16 93 views
0

我正在爲下午的學校活動構建數據庫。我試圖通過一個表單來創建一個搜索選項,該表單控制一個數據透視表,用戶可以在該數據表類中和/或年齡組和學年過濾。在Excel中自動過濾數據透視表

我在VBA中編寫了這段代碼,它不工作。當我試圖編寫一個代碼來過濾上面的其中一個(如類類型)它的工作,但是當我將其擴展到3個過濾器選項時,它不起作用。當其中一個選項中沒有插入值時,它會失敗。

search_class.Hide 
ActiveSheet.PivotTables("PivotSearchClass").PivotFields("class type").ClearAllFilters 

If IsNull(Range("type_search").Value) Then 
    ActiveSheet.PivotTables("PivotSearchClass").PivotFields("class type").CurrentPage = "(All)" 
Else: ActiveSheet.PivotTables("PivotSearchClass").PivotFields("class type").CurrentPage = Range("type_search").Value 
End If 

type_box = "pick a class type" 

ActiveSheet.PivotTables("PivotSearchClass").PivotFields("group age").ClearAllFilters 

If IsNull(Range("target_search").Value) Then 
    ActiveSheet.PivotTables("PivotSearchClass").PivotFields("group age").CurrentPage = "(All)" 
Else: ActiveSheet.PivotTables("PivotSearchClass").PivotFields("group age").CurrentPage = Range("target_search").Value 
End If 

target_box = "pick a group age" 

ActiveSheet.PivotTables("PivotSearchClass").PivotFields("school year").ClearAllFilters 

If IsNull(Range("year_search").Value) Then 
    ActiveSheet.PivotTables("PivotSearchClass").PivotFields("school year").CurrentPage = "(All)" 
Else: 
ActiveSheet.PivotTables("PivotSearchClass").PivotFields("school year").CurrentPage = Range("year_search").Value 
End If 

year_search_box = "pick a school year" 

ActiveSheet.PivotTables("PivotSearchClass").PivotCache.Refresh 

有沒有人知道ehat的問題是,以及如何解決它?

回答

1

我認爲,如果你改變你的測試,它的工作之一:

If IsEmpty(Range("type_search").Value) 

If Range("type_search").Value = "" 

IsNull用於測試Variant變量是否包含空值,不會無論是空白還是已填滿的單元都是如此。

+0

嗨道格它的作品!謝謝! – user1123417

+0

很高興聽到它。您應該通過點擊答案旁邊的複選標記來接受它以及您已獲得的其他有用答案。 –

0

我在這臺電腦上沒有Excel,數據透視表是我的弱點,但我會盡力幫助,因爲你看起來很孤單。首先確保腳本確實運行了if語句的「真實」情況,然後編輯CurrentPage的值以查看您的問題是否存在(即將「(所有)」值更改爲其他值)。錯誤在哪裏,錯誤描述是什麼?

+0

嗨,非常感謝您的回答。如果Range(「type_search」)。Value =「」 解決了它! – user1123417

相關問題