2016-11-22 6 views
0

Я получаю сообщение об ошибке при попытке запустить приведенный ниже код. Может ли кто-нибудь объяснить, почему я получаю ошибку на последней части, когда код пытается создать опорный стержень?Ошибка при создании сводной таблицы в VBA

Ошибка говорит: «Неправильный вызов процедуры или аргумент» в последней части, где я установил Пвт

Private Sub CommandButton1_Click() 

Dim sht As Worksheet 
Dim pvtCache As PivotCache 
Dim pvt As PivotTable 
Dim StartPvt As String 
Dim SrcData As String 

For Each PT In Sheet5.PivotTables 
    PT.TableRange2.Clear 
Next PT 

'Determine the data range you want to pivot 
    SrcData = ActiveSheet.Name & "!" & Range("B7:D10").Address(ReferenceStyle:=xlR1C1) 

'Where do you want Pivot Table to start? 
    StartPvt = Sheet5.Name & "!" & Sheet5.Range("B12").Address(ReferenceStyle:=xlR1C1) 

'Create Pivot Cache from Source Data 
    Set pvtCache = ActiveWorkbook.PivotCaches.Create(_ 
    SourceType:=xlDatabase, _ 
    SourceData:=SrcData) 

MsgBox StartPvt & "_" & SrcData 

'Create Pivot table from Pivot Cache 
    Set pvt = pvtCache.CreatePivotTable(_ 
    TableDestination:=StartPvt, _ 
    TableName:="TestPivotTable") 

End Sub 
+0

Какая точна линия, где возникает ошибка? И что говорит сообщение об ошибке? – rohrl77

+0

Ошибка говорит: «Неверный вызов или аргумент процедуры» в последней части, где я устанавливаю pvt. –

ответ

2

Я думаю, что ваш код пытается справиться с SrcData и StartPvt хранится в виде строки, как он ожидал ассортимент. Это делает то же самое, что и у вас, но сохраняет диапазоны как Range и преобразует их в строки только тогда, когда это необходимо.

Private Sub CommandButton1_Click() 

    Dim sht As Worksheet 
    Dim pvtCache As PivotCache 
    Dim pvt As PivotTable 
    Dim SrcData As Range, StartPvt As Range 
    Dim PT As Variant 

    For Each PT In Sheet5.PivotTables 
     PT.TableRange2.Clear 
    Next PT 

    'Determine the data range you want to pivot 
     Set SrcData = ActiveSheet.Range("B7:D10") 

    'Where do you want Pivot Table to start? 
     Set StartPvt = Sheet5.Range("B12") 

    'Create Pivot Cache from Source Data 
     Set pvtCache = ActiveWorkbook.PivotCaches.Create(_ 
     SourceType:=xlDatabase, _ 
     SourceData:=SrcData.Address) 

    MsgBox StartPvt.Parent.Name & "!" & StartPvt.Address(ReferenceStyle:=xlR1C1) & "_" & _ 
      SrcData.Parent.Name & "!" & SrcData.Address(ReferenceStyle:=xlR1C1) 

    'Create Pivot table from Pivot Cache 
     Set pvt = pvtCache.CreatePivotTable(_ 
     TableDestination:=StartPvt, _ 
     TableName:="TestPivotTable") 

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