VBA:不能与数据透视表一起使用(错误1004)

时间:2019-05-31 10:37:17

标签: excel vba pivot pivot-table

好的,我现在真的很沮丧。在过去大约一个小时的时间里,我一直在尝试从简单的Pivot获取数据。我无法正常工作。

我非常简单的代码:

Sub getXXFromPivot()

     Dim test As PivotTable

     Set Sheet1 = ActiveWorkbook.Sheets("Sheet5")
     Set test = Sheet1.PivotTables("PivotTable1")
     Set test2 = test.ClearAllFilters

     MsgBox test2

End Sub

我试图使用“ GetPivotData”方法获取数据,但是无论我在test.之后使用什么(ClearAllFilters只是一个测试),我总是会出错1004.我的错误是什么?我想不明白。 确实存在“数据透视表1”。我可以MsgBox test并获得“数据透视表1”。

2 个答案:

答案 0 :(得分:2)

添加到我的评论中,请在下面看到您的代码的改编:

Option Explicit 'Is recommended to use this always
Sub getXXFromPivot()

    Dim sht As Worksheet
    Dim pTbl As PivotTable

    Set sht = ActiveWorkbook.Sheets("Sheet5")
    Set pTbl = sht.PivotTables("PivotTable1")
    pTbl.ClearAllFilters

    MsgBox pTbl.Name

End Sub

有关如何使用数据透视表的很好的参考资料,请参见The VBA Guide To Excel Pivot Tables

答案 1 :(得分:1)

您可能决定使用数据透视表的<asp:GridView ID="gvTable" runat="server" AutoGenerateColumns="False" AllowPaging="True" OnPageIndexChanging="gvTable_PageIndexChanging" PageSize="15" OnRowDataBound="gvTable_RowDataBound" CellPadding="4" ForeColor="#333333" GridLines="None" OnSelectedIndexChanging="gvTable_SelectedIndexChanging" style="margin-top: 0px"> <AlternatingRowStyle BackColor="White" /> <Columns> <asp:TemplateField HeaderText="Username"> <ItemTemplate> <asp:Label ID="lblUsername" runat="server" Text='<%# Bind("Username") %>'></asp:Label> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="CompanyName"> <ItemTemplate> <asp:Label ID="Label1" runat="server" Text='<%# Bind("CompanyName") %>'/> </ItemTemplate> </asp:TemplateField> <asp:TemplateField HeaderText="Street"> <ItemTemplate> <asp:Label ID="Label2" runat="server" Text='<%# Bind("Street") %>'/> </ItemTemplate> </asp:TemplateField> </Columns> </asp:GridView> TableRange1属性并对其进行循环。这是主要区别:

  • TableRange1-返回一个Range对象,该对象表示包含整个数据透视表报表的范围,但不包括页面字段。只读。

  • TableRange2-返回一个Range对象,该对象表示包含整个数据透视表报表(包括页面字段)的范围。只读。


TableRange2