【发布时间】:2021-07-16 00:18:35
【问题描述】:
我有一个宏可以帮助用户设置和清除数据透视表上的过滤器。几个月来,该宏在我的整个办公室都运行良好。然后似乎无缘无故,一台人的电脑开始在线上出现错误 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 是sub 的整数参数。
该字段的表源数据中肯定有空白项。该行在我的计算机上工作,我可以确认它正在从表中删除空白项目。但是当我移到我同事的电脑上运行这条线时,它给出了错误 400。
有没有人对这个原因有任何想法,或者关于如何避免错误的建议?是否有其他方法可以从此数据透视字段中过滤空白行?
【问题讨论】:
-
您无法隐藏 所有 个数据透视项目,所以当您尝试隐藏它时,它是最后一个可见项目吗?
-
@TimWilliams 是的!有时,不同字段中不同过滤器的组合会从表中删除所有可见项目,但没有单个过滤器会自行删除所有项目。有问题吗?
-
如果它是唯一可见的,你需要确保你没有试图隐藏它 - 如果你可以显示更多相关代码以围绕你的内容添加一些上下文,有人可能会有建议正在做。
-
@TimWilliams 我今天使用那台 PC 进行了一些诊断测试,发现他们的 Excel 一直在跳过 Workbook_Open 事件,这意味着
.RefreshAll行从未为他们运行过。该表不缓存源数据,实际上是在尝试过滤空白缓存并导致错误。鉴于您所说的过滤后不允许没有项目,这是有道理的。 -
@TimWilliams 现在我只需要弄清楚为什么他们的 excel 能够跳过 Workbook_Open 事件。
标签: excel vba pivot-table