excel - VBA更改枢轴月过滤器动态
问题描述
我有以下代码来更改数据透视过滤器,我想从当前选择上一个月份,但代码没有做任何事情例如过滤器是“Sep”,我想转到“Oct”我们有 11 月我需要运行宏并将过滤器更改为“Oct”</p>
Sub PivotChange()
Application.ScreenUpdating = False
Dim WBM As Workbook
Set WBM = Workbooks("MASTER SellOut.xlsx")
Dim SellOut As Worksheet
Set SellOut = WBM.Worksheets("SellOut")
Dim pf As PivotField
Set pf = SellOut.PivotTables("PivotTable2").PivotFields("Date")
Dim pi As PivotField
Dim strMonth As String
' current month as string
strMonth = Format(Date, "mmm")
' refresh pivottable
SellOut.PivotTables("PivotTable2").PivotCache.Refresh
With SellOut.PivotTables("PivotTable2").PivotFields("Date")
On Error Resume Next
' check, if pivotfield exists
Set pi = .PivotField(strMonth)
On Error GoTo 0
If Not pi Is Nothing Then
pi.Visible = True
For Each pi In .PivotField
If pi.Name <> strMonth Then pi.Visible = False
Next pi
End If
End With
Application.ScreenUpdating = True
End Sub
解决方案
你不pi
应该:PivotItem
PivotField
Dim pi As PivotItem
...
With pf
On Error Resume Next
' check, if pivotfield exists
Set pi = .PivotItems(strMonth)
On Error GoTo 0
If Not pi Is Nothing Then
pi.Visible = True
For Each pi In .PivotItems
If pi.Name <> strMonth Then pi.Visible = False
Next pi
End If
End With
推荐阅读
- python - “如果有”函数不会检查列表中的字符串是否与用户输入匹配。Python
- javascript - 如何修复:未捕获的 ReferenceError:Jquery 中未定义模块
- c++ - 显示函数的枚举值
- c - 为什么我的 gcc 编译器不能识别 bzip2 函数,但允许我包含它们所属的库?
- python - 在一个程序中多次运行 multiprocessing Pool.map 最终会阻塞
- java - 自定义 failureHandler 在 Spring 安全登录中抛出 401
- python - 如何获得按第二个变量(Python)分组的词频计数
- aws-lambda - 如何正确解析解码的 base64 数据
- python - AttributeError:尝试添加模型权重时,“模型”对象没有属性“测试版”
- python - 将 input() 函数转换为整数时出错