数据透视表错误1004

任何人都可以看到为什么这段代码会导致最后一行1004错误? 一切都很好,直到最后一行。 我有它的工作,然后开始得到这个错误,我不明白为什么。 Sheet2是一张空白纸。 Sheet1目前只是testing数据,10行,3列。 它从B3开始。 有人有主意吗?

Sub CreatePivot() ' Define RngTarget and RngSource as Range type variables Dim RngTarget As Range Dim RngSource As Range Dim intLastCol As Integer Dim intCntrCol As Integer ' RngTarget is where the PivotTable will be created (ie: Sheet2, Cell B3) Set RngTarget = ThisWorkbook.Worksheets("Sheet2").Range("B3") ' RngSource defines the Range that will be used to create the PivotTable ' ActiveWorkbook = The currently opened Workbook ' ActiveSheet = The currectly opened sheet ' UsedRange = The Range of cells with active data in them Set RngSource = ActiveWorkbook.ActiveSheet.UsedRange ' Select the Range RngSource.Select ' Copy the Range into the clipboard RngSource.Copy ' Create a new PivotTable using the RngSource defined above, ' in Excel format, ' placed at the RngTarget location, ' And name it PivotB3 just for reference if needed ActiveWorkbook.PivotCaches.Create(xlDatabase, RngSource).CreatePivotTable RngTarget, "PivotB3" ' Get the last used column from the data table intLastCol = RngSource.Columns(RngSource.Columns.Count).Column ' Select the Pivot table so we can apply the conditional formats ActiveSheet.PivotTables("PivotB3").PivotSelect "", xlDataAndLabel, True 

您正在收到错误,因为数据透视表位于工作表2上,而不是活动工作表。 您可以通过在select数据透视表之前简单地selectsheet2来修复错误,但是您真正想要做的是消除代码中的所有select。 请参阅避免使用select作进一步解释/示例。

尝试这个:

 Sub CreatePivot() Dim RngTarget As Range Dim RngSource As Range Dim ws As Worksheet Dim pt As PivotTable Set ws = ThisWorkbook.Sheets("Sheet2") ws.Cells.Clear ' RngTarget is where the PivotTable will be created (ie: Sheet2, Cell B3) Set RngTarget = ws.Range("B3") Set RngSource = ActiveWorkbook.ActiveSheet.UsedRange ' Create a new PivotTable ActiveWorkbook.PivotCaches.Create(xlDatabase, RngSource).CreatePivotTable _ RngTarget, "PivotB3" Set pt = RngTarget.PivotTable ' We now have access to the pivot table and can modify as needed pt.PivotSelect "", xlDataAndLabel, True 'ActiveSheet.PivotTables("PivotB3").PivotSelect "", xlDataAndLabel, True End Sub 

注意:我删除了不属于您的问题的variables和注释,以便更容易地看到发生了什么。

尝试下面的代码:

 Sub CreatePivot() ' Define RngTarget and RngSource as Range type variables Dim RngTarget As Range Dim RngSource As Range Dim intLastCol As Integer Dim intCntrCol As Integer ' RngTarget is where the PivotTable will be created (ie: Sheet2, Cell B3) Set RngTarget = ThisWorkbook.Worksheets("Sheet2").Range("B3") ' RngSource defines the Range that will be used to create the PivotTable ' ActiveWorkbook = The currently opened Workbook ' ActiveSheet = The currectly opened sheet ' UsedRange = The Range of cells with active data in them Set RngSource = ActiveSheet.UsedRange ' Select the Range ' RngSource.Select ' Copy the Range into the clipboard ' RngSource.Copy ' Create a new PivotTable using the RngSource defined above, ' in Excel format, ' placed at the RngTarget location, ' And name it PivotB3 just for reference if needed Dim oPC As PivotCache Set oPC = ActiveWorkbook.PivotCaches.Create(xlDatabase, RngSource) Dim oPT As PivotTable Set oPT = oPC.CreatePivotTable(RngTarget, "PivotB3", True) ' Get the last used column from the data table intLastCol = RngSource.Columns(RngSource.Columns.Count).Column ' Select the Pivot table so we can apply the conditional formats 'Worksheets("Sheet2").PivotTables("PivotB3").PivotSelect "", xlDataAndLabel, True End Sub