2013-11-12 7 views
0

Я использую следующий код, чтобы попытаться создать сводную таблицу в Excel, но это, кажется, не работаетСоздание сводной таблицы в VBA

Range("A1").Select 
    Range(Selection, Selection.End(xlToRight)).Select 
    Range(Selection, Selection.End(xlDown)).Select 

Dim AllData As Range 
Set AllData = selection.CurrentRegion 

    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=AllData).CreatePivotTable TableDestination:= _ 
     "'[Process Data v2.xls]Pivot'!R4C1", TableName:="PivotTable3", _ 
     DefaultVersion:=xlPivotTableVersion10 

Ошибка находится с таблицей раздела сводной и его ошибка времени выполнения 5. Недействительный вызов или аргумент процедуры.

Я пробовал записывать макрос и иметь точный диапазон в скрипте, и он работает, но вместо этого его заменяет переменная «Alldata». Я пробовал много чего, но не могу понять, почему его не работает

+0

Попробуйте использовать «Set AllData = [A1] .CurrentRegion', помните, что если какие-либо ячейки, которые касаются ваших данных, имеют данные, они будут включены в Currentregion. – user2140261

+0

Лучше было бы просто использовать таблицу или список непосредственно. – user2140261

+0

Огромное спасибо, что сработало! – user2983064

ответ

2

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

Dim pc, pt 
Dim AllData As Range 

Set AllData = Range("A1").CurrentRegion 

Set pc = ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _ 
             SourceData:=AllData) 
Set pt = pc.CreatePivotTable TableDestination:= _ 
       "'[Process Data v2.xls]Pivot'!R4C1", _ 
       TableName:="PivotTable3", DefaultVersion:=xlPivotTableVersion10 
+0

Это не нравится этот код, даже не позволяйте мне запускать vba с ним. Я думаю, что проблема связана с частью AllData, потому что код работал, когда я записывал его, только когда я заменил hardcoded-выбор на Alldata – user2983064

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