PivotItems("(blank)").Visible = False 在一台计算机上给出错误 400,但在另一台计算机上运行没有错误

时间:2021-07-14 19:55:19

标签: excel vba pivot-table

我有一个宏可以帮助用户在数据透视表上设置和清除过滤器。几个月来,宏在我的整个办公室都运行良好。然后似乎没有任何原因,一个人的电脑开始出现错误 400 上线: MySheet.MyPivotTable.MyPivotField.PivotItems("(blank)").Visible = False

作为参考,实际行是 pf_New.PivotItems("(blank)").Visible = False,其中 pf_New 是定义为 Me.PivotTables("Usage").PivotFields(Sheet1.[UsedOn6].Column - 6 + new_machine) 的 PivotField 对象,其中 new_machine 是子的整数参数。

该字段的表源数据中肯定有空白项。该行在我的计算机上运行,​​我可以确认它正在从表格中删除空白项目。但是当我移动到我同事的计算机并运行该线路时,它给出了错误 400。

是否有人对原因有任何想法,或有关如何避免错误的建议?是否有其他方法可以从此数据透视字段中过滤空白行?

1 个答案:

答案 0 :(得分:0)

在对导致问题的 PC 进行更多调查后,我发现错误的原因是其他设置和代码的组合未能正确设置表格以进行过滤。

在数据透视表选项中,“用文件保存源数据”未选中,“打开文件时刷新数据”未选中。这是为了减少文件大小并减少打开文件时的延迟。

但是关闭这两个选项意味着打开文件时数据透视表没有数据。在 Excel 中与表格交互将显示错误“数据透视表保存时没有基础数据。使用刷新数据命令更新报告”但在 VBA 中与其交互时,您会收到错误“内存不足”或“ 400"。

为避免此问题,请在尝试应用或更改任何过滤器之前使用 ThisWorkbook.RefreshAllYourPivotTable.RefreshTable

在我的文件中,它发生在一个人而不是其他同事的原因是因为我的 Workbook_Open 事件在一系列其他进程之后确实有 ThisWorkbook.RefreshAll 行。由于我仍在调查的未知原因,此人的 PC 跳过了该行。