我们有一小段 VBA 代码可以完美运行多年。本质上是:
Me.PivotTables("APivot").PivotFields("AField").CurrentPage = "Some text"
这一直有效,直到 Excel 2013,该行将失败并出现非特定错误:
运行时错误 5:
无效的过程调用或参数。
通过反复试验,我们发现在 Excel 2013 中,在用户使用 Excel 界面手动导航到该页面之前,您无法使用代码导航到数据透视表页面。一旦用户导航到一个页面,使用代码导航到该页面将始终成功(直到您关闭工作簿)。因此,为了让代码能够导航到任何页面,我们首先需要用户手动浏览所有页面。
一种解决方法是更改底层单元格的值:
Me.PivotTables("APivot").PivotFields("AField").CurrentPage.LabelRange.Value = "Some text"
我们目前被迫使用这种解决方法,但感觉很hackish。
Excel 2013 中究竟是什么导致了这种行为?现在是否需要先做一些事情才能导航到页面(戳一些东西,以某种方式加载一些数据等)?
编辑:Office 2016 中出现同样的问题。