簡體   English   中英

VBA用於創建數據透視表

[英]VBA for creating pivot table

我正在嘗試使用VBA插入數據透視表。

但是,每次嘗試運行它時,我都會在“ 定義數據透視緩存”部分收到錯誤:“ 運行時錯誤13:類型不匹配 ”。

我嘗試過更改變量名以及不使用其中的一些變量,但仍然遇到相同的錯誤。 我想念什么嗎?

Sub PivotTableAdd()

    'Declare Variables
    Dim PSheet As Worksheet
    Dim DSheet As Worksheet
    Dim PCache As PivotCache
    Dim PTable As PivotTable
    Dim PRange As Range
    Dim LastRow As Long
    Dim LastCol As Long

    'Insert a New Blank Worksheet
    'On Error Resume Next
    Application.DisplayAlerts = False
    'Worksheets("Pivot").Delete
    Sheets.Add Before:=ActiveSheet
    ActiveSheet.Name = "Pivot"
    Application.DisplayAlerts = True
    Set PSheet = Worksheets("Pivot")
    Set DSheet = Worksheets("Report")

    'Define Data Range
    LastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row
    LastCol = DSheet.Cells(1, Columns.Count).End(xlToLeft).Column
    Set PRange = DSheet.Cells(1, 1).Resize(LastRow, LastCol)

    'Define Pivot Cache
    Set PCache = ActiveWorkbook.PivotCaches.Create _
    (SourceType:=xlDatabase, SourceData:=PRange). _
    CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
    TableName:="PivotTable")

    'Insert Blank Pivot Table
    Set PTable = PCache.CreatePivotTable _
    (TableDestination:=PSheet.Cells(1, 1), TableName:="PivotTable")

End Sub

編輯:我更改了這一行,並使其工作:

Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PRange.Address(True, True, xlR1C1, True))

更改此:

Set PCache = ActiveWorkbook.PivotCaches.Create _
(SourceType:=xlDatabase, SourceData:=PRange). _
CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
TableName:="PivotTable")

至:

Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PRange)

Set PTable = PCache.CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
                               TableName:="PivotTable")

在您的原始代碼中, CreatePivotTable返回一個PivotTable ,而不是PivotCache ,因此給您“類型不匹配”錯誤

編輯:對此進行了測試,對我來說很好

Sub PivotTableAdd()

        'Declare Variables
        Dim PSheet As Worksheet
        Dim DSheet As Worksheet
        Dim PCache As PivotCache
        Dim PTable As PivotTable
        Dim PRange As Range
        Dim LastRow As Long
        Dim LastCol As Long

        'Insert a New Blank Worksheet
        'On Error Resume Next
        Application.DisplayAlerts = False
        'Worksheets("Pivot").Delete
        Sheets.Add Before:=ActiveSheet
        ActiveSheet.Name = "Pivot"
        Application.DisplayAlerts = True
        Set PSheet = Worksheets("Pivot")
        Set DSheet = Worksheets("Report")

        'Define Data Range
        LastRow = DSheet.Cells(Rows.Count, 1).End(xlUp).Row
        LastCol = DSheet.Cells(1, Columns.Count).End(xlToLeft).Column
        Set PRange = DSheet.Cells(1, 1).Resize(LastRow, LastCol)

        'Define Pivot Cache
       Set PCache = ActiveWorkbook.PivotCaches.Create( _
                  SourceType:=xlDatabase, SourceData:=PRange)

       Set PTable = PCache.CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), _
                               TableName:="PivotTable")
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM