vba - Excel VBA 数据透视表显示详细信息

标签 vba excel pivot-table drilldown

我有一个数据透视表,其中包含许多与客户、年份和季度相关的展开/折叠按钮,所有这些按钮后面都有 vba 到 .Showdetails。这些单独的代码集有效。但是,我正在努力使我的代码更高效、更易于管理,并且感谢另一个用户,我离我越来越近了。

以下是每个有效按钮的代码:

Sub Expand_Quarter()

Range("R13").Select

ActiveSheet.PivotTables("PivotTable1").PivotFields("Quarter").ShowDetail = IIf(Selection.ShowDetail, False, True)

End Sub  

这是引发错误的代码。我已经评论了错误发生的位置:
Sub ExpColl()

Dim pt As PivotTable, pf As PivotField, b As String

b = Application.Caller

With ActiveSheet

Set pt = .PivotTables("PivotTable1")

    Select Case b
        Case "btnExpCollCustProd": Set pf = pt.PivotFields(.Range("Q15").PivotField.Name)
        Case "btnExpCollYear": Set pf = pt.PivotFields(.Range("R12").PivotField.Name)
        Case "btnExpCollQtr": Set pf = pt.PivotFields(.Range("R13").PivotField.Name)
    End Select

    '--- Run Time Error 1004 Application-defined or Object Defined Error"
    pf.ShowDetail = IIf(pf.ShowDetail, False, True)
End With
End Sub  

变量 pf 确实返回了我所期望的,所以我有点困惑。非常感谢所有帮助。

最佳答案

我解决了!!!以下代码将起作用正是 我希望它如何:

Sub ExpColl()

Dim pt As PivotTable, pf As PivotField, b As String, s As Shape, bev As Long, r As Range

b = Application.Caller
Set s = ActiveSheet.Shapes(b)

If b Like "btnExpColl*" Then

    With ActiveSheet

        Set pt = .PivotTables("PivotTable1")

        Select Case b
            Case "btnExpCollCustProd":
                Set r = .Range("Q15")
                Set pf = pt.PivotFields(r.PivotField.Name)
            Case "btnExpCollYear":
                Set r = .Range("R12")
                Set pf = pt.PivotFields(r.PivotField.Name)
            Case "btnExpCollQtr":
                Set r = .Range("R13")
                Set pf = pt.PivotFields(r.PivotField.Name)
        End Select
            pf.ShowDetail = IIf(r.ShowDetail, False, True)
            s.ThreeD.BevelTopType = IIf(s.ThreeD.BevelTopType = 3, 7, 3)
    End With
End If
End Sub  

我希望这对其他人有帮助:)

关于vba - Excel VBA 数据透视表显示详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26504218/

相关文章:

php - 您能否在动态数据透视表上使用此代码帮助我。错误:(!) fatal error :调用成员函数fetch_all()

vba - 如何将 stdole.StdPicture 转换为其他类型?

excel - 在 Excel (DAX) 中查找相对于当前行值的行

Excel:在数据透视表上打印所有过滤器

Python - Excel 到 HTML(保持格式)

sql - 从 Reporting Services 导入时在 Excel 中按日期排序

sql - PostgreSQL 选择通过多对多数据透视连接的表的多个列

python - 将 .xlsx 文件与 Python 合并

excel - 使用相对引用

excel - 在 VBA 中打开与 Excel 电子表格的 ADO 连接