我正在为下午的学校活动建立一个数据库。我正在尝试通过控制数据透视表的表单创建搜索选项,用户可以在其中过滤类类型和/或年龄组和/或学年。
我在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
有谁知道问题是什么以及如何解决?
答案 0 :(得分:1)
我认为如果将测试更改为:
,它将起作用If IsEmpty(Range("type_search").Value)
或
If Range("type_search").Value = ""
IsNull
用于测试变量变量是否包含空值,对于空白或填充单元格,该值不会为真。
答案 1 :(得分:0)
我在这台计算机上没有Excel,而数据透视表是我的弱点,但我会尽力帮助你,因为你似乎独自一人。首先确保你的脚本确实运行了if语句的“True”情况,然后我将编辑CurrentPage的值以查看你的问题是否存在(即,将“(all)”值更改为其他值)。错误在哪里,错误描述是什么?