我刚刚遇到了一个我从未注意过的数据透视表VBA问题。当数据透视表具有多个数据字段时,则引用PivotItem.DataRange将返回从应该位置向下移动一行的范围。您可以在下面看到地址偏离一行,选择位于数据透视表下方 - 再次关闭一行:
如果数据透视表只有一个数据字段,例如,如果我摆脱上面的“总和”,则问题就会消失。
我在这里发现了Macro Marc的one reference to this,但网上没有别的。有没有人知道这一点,例如,它是多么一致,最好的代码编码方式等等?我可以想出几种方法来检查这个,但是很糟糕!
可能的解决方案:
在我非常有限的测试中,似乎PivotFields没有类似的问题。所以我最好的想法是将数据透视字段的第一行与其第一个数据透视表项的第一行进行比较。但是,我不确定我的“第一”概念总是与Excel相同。不管怎么说,我在考虑这样的事情:
BugCorrection = PivotTable.VisibleFields(1).DataRange.Row - _
PivotTable.VisibleFields(1).VisibleItems(1).DataRange.Row