我有一个包含几个字段的数据透视表,我只希望折叠一个透视字段。我似乎无法使其发挥作用,因此需要一些帮助。
Dim pt As PivotTable
Dim pr As Range
Dim pc As PivotCache
Set pr = dataSht.UsedRange
Set pc = wb.PivotCaches.Create(xlDatabase, SourceData:=pr)
Set pt = pc.createPivotTable(wb.Worksheets(shtName).Range("A1"), strPivotName)
With pt
.PivotFields("One").Orientation = xlRowField
.PivotFields("One").Subtotals(1) = False
.PivotFields("Two").Orientation = xlRowField
.PivotFields("Two").Subtotals(1) = False
.PivotFields("Three").Orientation = xlRowField
.PivotFields("Three").Subtotals(1) = False
.PivotFields("Four").Orientation = xlRowField
.PivotFields("Four").Subtotals(1) = False
With .PivotFields("Sum of $$$ (000)")
.Orientation = xlDataField
.Caption = "% Total"
.Calculation = xlPercentOfParent
.BaseField = "Two"
.NumberFormat = "0.00%"
End With
我打算倒掉最后一场,四号。将.PivotFields("Four").ShowDetail = False
添加到第一个With的末尾会给我一个应用程序定义或对象定义的错误。 " ShowDetails"结果相同。
或者,我已经尝试过使用DrillTo,虽然我对此并不十分了解,但在结束后以下列容量:
Dim pi as PivotItem
pi.DrillTo Field:= "Three"
再次,我收到一个错误。对象变量或未设置块变量。
仍然把我的头包裹在VBA附近,所以如果有人能帮助我,那就太好了!
答案 0 :(得分:0)
想出来!因此,对于将来可能遇到类似问题的用户:
我不得不上升一个级别并专门识别数据透视表,因为它只是在with pt
所以,在我的问题中的上述代码之后,我添加了
pt.TableStyle2 = "PivotStyleMedium3"
pt.PivotFields("Three").ShowDetail = False
end With
为什么它不能在我的第一个with
区块中工作,我不知道,但至少它正在工作。我的猜测是,在完全创建之前,无法操纵数据透视表。也许。 耸肩