数据透视表错误|调用或过程无效

人气:518 发布:2022-10-16 标签: excel vba pivot-table

问题描述

我在这件事上需要一些帮助。我正在尝试从第一季度开始创建一个透视表,其中包含同一工作表中的一系列数据。第一个if语句在那里,因为最后一列并不总是包含标头,所以我将其包含在其中。

我希望范围是动态的,因为要创建的表的大小将根据表中数据的行数而变化。源数据始终为A1:o&;lastRow,并且表始终需要放置在同一工作表的第一季度。

我收到下面的错误-无效调用或过程-屏幕截图。

调试时的问题行是我设置透视表的地方-也在下面的屏幕截图中。

如果有帮助,我将在启动文件夹中的单独工作表中运行此代码。

如有任何帮助,我们将不胜感激!

更新为使用注释建议显示当前代码

Sub aaTemp()
'
' aaTemp Macro
'

If Range("O1").Value = "" Then
    Range("O1").Value = "Notes"
    Else
    End If

Dim lastRow, lastColumn As Long
    lastRow = ActiveSheet.Range("B65536").End(xlUp).row
    lastColumn = 15

'Dim pivotSource As String
    'pivotSource = "'" & ActiveSheet.Name & "'!" & Range("A1:O" & lastRow).Address(ReferenceStyle:=xlR1C1)

'Dim pivotDestination As String
    'pivotDestination = "'" & ActiveSheet.Name & "'!" & Range("Q1").Address(ReferenceStyle:=xlR1C1)

Dim ws As Worksheet
Dim wb As Workbook
Dim pc As PivotCache
Dim pt As PivotTable

Set ws = ActiveSheet
Set wb = ThisWorkbook

Set pc = wb.PivotCaches.Create(SourceType:=xlDatabase, _
    sourceData:=ActiveSheet.Range("A1:O" & lastRow), _
    Version:=xlPivotTableVersion15)

Columns("Q:Z").delete Shift:=xlToLeft

Set pt = ws.PivotTables.Add(PivotCache:=pc, _
    TableDestination:=ActiveSheet.Range("Q1"), _
    TableName:="PTPivotTable")

End Sub

推荐答案

Sub aaTemp()
'
' aaTemp Macro
'

If Range("O1").Value = "" Then
    Range("O1").Value = "Notes"
    Else
    End If

Dim lastRow, lastColumn As Long
    lastRow = ActiveSheet.Range("B65536").End(xlUp).row
    lastColumn = 15

Dim ws As Worksheet
Dim wb As Workbook
Dim pc As PivotCache
Dim pt As PivotTable

Set ws = ActiveSheet
Set wb = ActiveWorkbook   'This was the needed change

Set pc = wb.PivotCaches.Create(SourceType:=xlDatabase, _
    sourceData:=ActiveSheet.Range("A1:O" & lastRow), _
    Version:=xlPivotTableVersion15)

Columns("Q:Z").delete Shift:=xlToLeft

Set pt = ws.PivotTables.Add(PivotCache:=pc, _
    TableDestination:=ActiveSheet.Range("Q1"), _
    TableName:="PTPivotTable")

End Sub

706