excel - 自动更改枢轴过滤器的宏不起作用
问题描述
我有一个包含几个数据透视表的报告,这些数据透视表运行生产数据、订单和交货。我每天运行它,然后更改报告中的过滤器以选择所有交货编号,然后取消选择空白交货编号。
换句话说,我只选择那些包含交货编号的订单。如果交货编号为空白,则订单尚未设置为发货。
ActiveSheet.PivotTables("PivotTable5").PivotFields("Del #").CurrentPage = _
"(All)"
With ActiveSheet.PivotTables("PivotTable5").PivotFields("Del #")
.PivotItems("(blank)").Visible = True
End With
ActiveSheet.PivotTables("PivotTable5").PivotFields("Del #").CurrentPage = _
"(All)"
With ActiveSheet.PivotTables("PivotTable5").PivotFields("Del #")
.PivotItems("(blank)").Visible = False
End With
End Sub
我想让它进入并选择所有的交货号码,除了空白交货号码。
似乎无法选择“全部”,并且只选择了前一天之前选择的内容。
解决方案
如何显示除空白之外的每个 PivotItem
如果PivotTables().PivotFields().EnableMultiplePageItems
设置为True
,则无法通过设置来选择所有PivotItems (尽管宏记录器仅记录!)。PivotFields.CurrentPage
="(All)"
要选择所有数据透视项,只需使用PivotField.ClearManualFilter
或PivotField.ClearAllFilters
(在数据透视字段上,而不是偶然在数据透视表上!)。之后,您可以隐藏(取消选择)空白的。
With WorkSheet.PivotTables(...).PivotFields(...)
.ClearManualFilter ' or ClearAllFilters
If .PivotItems.Count > 1 Then ' at least 1 has to remain visible
.PivotItems("(blank)").Visible = False
End If
End With
错误处理
至少一个 PivotItem 必须保持可见。如果只有空白并且您尝试隐藏它们,您将收到错误消息。
如果也没有空格,那么您会收到一个错误,您应该使用 捕获该错误,On Error Resume Next
或者您可以先遍历所有项目以检查其中一个是否称为“(空白)”。仅检查最后一个 PivotItem 的名称(如)是不够的If .PivotItems(.PivotItems.Count).Name = "(blank)"
,因为它不一定是最后一个条目。
您的示例应与此一起使用:
With ActiveSheet.PivotTables("PivotTable5").PivotFields("Del #")
.ClearManualFilter
If .PivotItems.Count > 1 Then ' at least 1 has to remain visible
.PivotItems("(blank)").Visible = False
End If
End With
也许你需要ActiveSheet.PivotTables("PivotTable5").RefreshTable
每天额外。
反过来:如何只显示空白的 PivotItems
如果EnableMultiplePageItems = True
and one or many 被选中,但不是空白的,则CurrentPage = "(blank)"
引发错误。您必须首先启用空白页面,方法是清除上面的过滤器或使空白额外可见,然后您可以选择仅包含空白页面的页面:
WorkSheet.PivotTables().PivotFields().PivotItems("(blank)").Visible = True
WorkSheet.PivotTables().PivotFields().CurrentPage = "(blank)"
推荐阅读
- python - Tensorflow 2.0 未使用 Heroku 在 pipenv 上安装
- gcc - 在没有 .SUNW_syminfo 的情况下在 Solaris 上构建共享库以导出
- wordpress - 我无法更改我的 wordpress 网站的主页
- jsp - 仅针对特定 URL 的 Tomcat 基本身份验证
- azure-devops - DotNetCLI@2 包似乎忽略了配置输入
- c# - AppDomain.CurrentDomain.SetThreadPrincipal 问题
- python-3.x - 如何解决缺少参数的问题
- symfony - Symfony4:资产文件夹在哪里?
- oracle-golden-gate - Oracle Goldengate - IF 语句 - 不等于
- java - 可选的三元运算符中不需要的空指针异常