2013-09-16 2 views
1

Получение несоответствия типа на линии tabledestination:=("pivot!A3")
Я хочу добавить лист и назову его «Pivot» и создать сводную таблицу на этом листе.VBA для создания сводной таблицы, несоответствие типа? Что я делаю не так?

Dim pt As PivotTable 
Dim Pcache As PivotCache 
Sheets.add.name = "Pivot" 
Sheets("DATA").Select 
Set Pcache = ActiveWorkbook.PivotCaches.Create(xlDatabase, Cells(1, 1).CurrentRegion) 
Set pt = ActiveSheet.PivotTables.Add(PivotCache, tabledestination:=("pivot!A3")) 
    With pt 
     PivotFields.Subtotals(1) = False 
     .InGridDropZones = True 
     .RowAxisLayout xlTabularRow 
     .PivotFields("Apple").Orientation = xlRowField 
     .PivotFields("Apple Qty").Orientation = xlDataField 
     End With 

ответ

1

Это работало для меня ...

Sub Sample() 
    Dim pt As PivotTable 
    Sheets.Add.Name = "Pivot" 

    With ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _ 
     SourceData:=Sheets("DATA").Cells(1, 1).CurrentRegion) 

     Set pt = .CreatePivotTable(TableDestination:="Pivot!R3C1") 
    End With 

    '~~> Rest of Code 
End Sub 

Или, если вы хотите сделать это по-своему, то

Sub Sample() 
    Dim pt As PivotTable 
    Dim Pcache As PivotCache 

    Sheets.Add.Name = "Pivot" 

    Set Pcache = ActiveWorkbook.PivotCaches.Create(xlDatabase, _ 
    Sheets("DATA").Cells(1, 1).CurrentRegion) 

    Set pt = Pcache.CreatePivotTable(tabledestination:=("Pivot!R3C1")) 

    '~~> Rest of the code 
End Sub 

Внимание: Если лист PIVOT существует, вы получите ошибка. Может быть, вы хотели бы добавить это в свой код?

Application.DisplayAlerts = False 
On Error Resume Next 
Sheets("Pivot").Delete 
On Error GoTo 0 
Application.DisplayAlerts = True 
Sheets.Add.Name = "Pivot" 
0

Вместо использования

Set pt = ActiveSheet.PivotTables.Add(PivotCache, tabledestination:=("pivot!A3")) 

Я использовал это, чтобы двигаться вперед:

Sheets("Pivot").Activate 
Set pt = ActiveSheet.PivotTables.Add(PivotCache:=Pcache, TableDestination:=Range("A3")) 

Обратите внимание на добавление Sheets("Pivot").Activate и PivotCache:=Pcache. Тем не менее, я не проверял действительность кода ниже этого утверждения.

Смежные вопросы