【发布时间】:2019-12-26 23:01:35
【问题描述】:
我正面临这篇文章的主题在以下代码中提到的 VBA 错误:
Sub test
Dim pt As PivotTable
Dim cp, dep As Variant
Dim Legx, DepDtex As PivotField
Set pt = ActiveSheet.PivotTables("Main")
Set cp = Sheets("LEGDETAILS").Range("E3")
Set dep = Sheets("LEGDETAILS").Range("AX2")
Set Legx = pt.PivotFields("Leg")
Set DepDtex = pt.PivotFields("DepDte")
With pt
Legx.CurrentPage = cp
DepDtex.CurrentPage = dep
End With
End Sub
错误出现在“with PT”之后。 代码应更改同一数据透视表的 2 个报告过滤器。 你能解释一下为什么会出现错误以及如何解决吗? 谢谢
【问题讨论】:
-
Legx.CurrentPage我认为是对象类型,所以需要Set Legx.CurrentPage = cp。 -
仅供参考
Dim Legx, DepDtex As PivotField将DtpDtex声明为PivotField对象,并将Legx保留为隐式Variant-cp同上。cp和dep都应该声明为As Range。 -
@DavidZemens 我不确定这里的
Set。在测试中,CurrentPage没想到会出现Range对象。适用于范围的字符串或值。 -
@DavidZemens 现在我无法重现该错误,因为我的答案在功能上等同于 OP,除了修复变量类型并明确声明
.Value...嗯。
标签: vba runtime-error pivot-table