Ошибка несоответствия типов при создании сводной таблицы в Excel с VBA - PullRequest
4 голосов
/ 09 декабря 2011

Я пытаюсь собрать макрос, который создаст простую сводную таблицу, используя данные активной рабочей таблицы. Когда я пытаюсь запустить его, я получаю ошибку несоответствия типов. Когда я запускаю отладчик, выделяется первый раздел: ActiveWorkbook.PivotCaches через xlPivotTableVersion10. Первоначально TableDestination был пустым, и я подумал, что это может быть проблемой, но после добавления места назначения я все еще получаю ту же ошибку.

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
SourceData:=ActiveSheet.UsedRange).CreatePivotTable TableDestination:="Sheet1!R3C1", _
TableName:="PivotTable1", DefaultVersion:=xlPivotTableVersion10

ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(1, 1)

With ActiveSheet.PivotTables("PivotTable1").PivotFields("Program Name")
    .Orientation = xlColumnField
    .Position = 1
End With
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
    "PivotTable1").PivotFields("Dollars Awarded"), "Sum of Dollars Awarded", xlSum
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Dept Head")
    .Orientation = xlRowField
    .Position = 1
End With

1 Ответ

2 голосов
/ 10 декабря 2011

Это сработало для меня (XL2007):

Sub Tester()

    With ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
        SourceData:=ActiveSheet.UsedRange)

        .CreatePivotTable TableDestination:="Sheet1!R3C1", _
        TableName:="PivotTable1", DefaultVersion:=xlPivotTableVersion10

    End With

    With Sheet1.PivotTables("PivotTable1")
        .PivotFields("Dept Head").Orientation = xlColumnField
        .PivotFields("Program Name").Orientation = xlRowField
        .AddDataField .PivotFields("Cost"), "Sum of cost", xlSum
    End With

End Sub

Убедитесь, что у вас еще нет конфликтующего сводного кэша / таблицы.

...