在许多中折叠一个枢轴场

时间:2018-01-08 20:51:08

标签: excel-vba pivot-table vba excel

我有一个包含几个字段的数据透视表,我只希望折叠一个透视字段。我似乎无法使其发挥作用,因此需要一些帮助。

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附近,所以如果有人能帮助我,那就太好了!

1 个答案:

答案 0 :(得分:0)

想出来!因此,对于将来可能遇到类似问题的用户:

我不得不上升一个级别并专门识别数据透视表,因为它只是在with pt

中工作

所以,在我的问题中的上述代码之后,我添加了

pt.TableStyle2 = "PivotStyleMedium3"
pt.PivotFields("Three").ShowDetail = False

end With

为什么它不能在我的第一个with区块中工作,我不知道,但至少它正在工作。我的猜测是,在完全创建之前,无法操纵数据透视表。也许。 耸肩