我有一个数据透视表,手动创建。用户需要能够对其进行过滤的方式不能通过报告过滤器或切片器来完成,所以我认为VBA将是一条可行的路。我已经构建了一个骨架用户表单,现在处于编写代码的棘手阶段。使用VBA用户窗体过滤数据透视表(特别是报表过滤器和切片器不能)
我在尝试使用PivotFilters函数,但这不起作用。我承认我在VBA是一个全新的新手,所以这可能是我犯的一个简单错误,或者PivotFilters可能不适合这项工作?这里有一个例子:
'ok button - this is the big one, telling the button what to do with the selected options!
Private Sub CommandButton1_Click()
'targeting our familiar pivot table
Dim pvt As PivotTable
Set pvt = ActiveSheet.PivotTables("PivotTable1")
'Whether to filter out low sample size brands
Dim pvtFieldSasz As PivotField
Set pvtFieldSasz = pvt.PivotFields("SampleSize")
If OptionButton1 = True Then
pvt.pvtFieldSasz.PivotFilters.ClearAllFilters
pvt.pvtFieldSasz.PivotFilters.Add2 Type:=xlCaptionEquals, Value1:="Reliable Sample"
End If
End
上面的例子是东西,可以用报告过滤器或切片器来完成,但我希望把所有的相关选项在用户的形式,使之成为一站式为用户的商店。
我得到的错误信息是“运行时错误'438':对象不支持属性或方法”。
我还没有转移到棘手的问题上,因为我想掌握基础知识。作为我想在不同过滤器中实现的示例:
根据用户选择的选项,过滤器将引用三个单独列中的一个。用户将有三个选项按钮,其中他们一次只能选择一个。如果他们选择OptionButton1,我希望数据透视表在字段X = 1上过滤。如果他们选择OptionButton2,它应该在字段Y = 1上过滤。OptionButton3对应于字段Z = 1。这些字段X,Y或Z实际上将作为行或列显示在数据透视表中,但它们是源数据的一部分,并且包含在数据透视表后面的选择中。
谢谢你的耐心帮助这个磕磕绊绊的新手 - 非常感谢任何提示!
编辑追加错误信息 –
我找到了你的问题并且正在写答案,但是将来你应该在错误信息发生的地方添加错误信息。 – OpiesDad
好点,会做 - 谢谢。 –