我是VBA的新手(这是第2天!)。我正在尝试设置数据透视表筛选器以匹配组合框用户选择。我找到了一些代码来在选择该单元格时将过滤器设置为单元格的内容,并且我通过将其放入按钮的子项中进行修改,以便在单击按钮之前不会激活代码。 / p>
Sub Generate_Report()
'PLAN - Changes Plan filter value for PivotTable to value in Plan combo box, which is
'linked to cell D9
'Set the Variables to be used
Dim pt As PivotTable
Dim PlanFilter As PivotField
Dim NewPlan As String
Set pt = Worksheets("Pivot Table").PivotTables("PivotTable_Parameters")
Set PlanFilter = pt.PivotFields("Plan")
NewPlan = Worksheets("Report Options").Range("D9").Value
'Update and refresh the PIVOT table
With pt
PlanFilter.ClearAllFilters
pt.PivotFields("Plan").CurrentPage = NewPlan
pt.RefreshTable
End With
End Sub
(我希望我能找到获得代码的页面 - 感谢您在线VBA社区帮助我开始使用!)
我在原始代码中更改了一些变量名称以更好地匹配上下文。 PlanFilter以前称为Field
。之前的.CurrentPage
行显示为:Field.CurrentPage=NewCat
我遇到了.CurrentPage
行的问题。在我更改变量名之前它工作正常,但是一旦我这样做,我就得到了“应用程序定义的或对象定义的”错误。我将字段引用更改为您在此处看到的较长引用,并且它最初工作,然后它没有。
使用相同代码的类似问题在Getting "Unable to set CurrentPage property of PivotField class" error处理,但我无法在那里发表评论。我尝试了斯科特建议的改变:
With PlanFilter
.ClearAllFilters
.CurrentPage = NewPlan
End With
......但我仍然收到错误。
有什么想法?
谢谢!
凯特
答案 0 :(得分:-1)
我会改变:
With pt
PlanFilter.ClearAllFilters
pt.PivotFields("Plan").CurrentPage = NewPlan
pt.RefreshTable
End With
到
With pt
.PivotFields("Plan").ClearAllFilters
.PivotFields("Plan").CurrentPage = NewPlan
.RefreshTable
End With