Я пытался создать сводную таблицу с использованием подпрограммы макросов, но мой код работает не полностью. Рабочий лист создан и назван, но он остается пустым. Я попытался изменить диапазон данных, как видно из другого похожего вопроса, который я нашел здесь, но это не сработало. Я пытаюсь сделать «кнопку-форму», которая создает сводную таблицу большого объема данных. Прошло некоторое время с тех пор, как я работал с VBA, так что извините за мои нубские вопросы и плохое кодирование. Любая помощь приветствуется!
Вот код:
Sub InsertPivotTable()
'Declare Variables
Dim PSheet As Worksheet 'nova planilha pra tab dinamica
Dim DSheet As Worksheet 'planilha de dados da tab dinamica
Dim PCache As PivotCache 'nome do cache
Dim PTable As PivotTable 'nome pra tab dinamica
Dim PRange As Range 'tamanho da fonte de dados
Dim LastRow As Long
Dim LastCol As Long
'Insert a New Blank Worksheet
On Error Resume Next
Application.DisplayAlerts = False
Worksheets("TESTE TabDin").Delete
Sheets.Add Before:=ActiveSheet
ActiveSheet.Name = "TESTE TabDin"
Application.DisplayAlerts = True
Set PSheet = Worksheets("TESTE TabDin")
Set DSheet = Worksheets("GESTÃO ORDENS ESMAGAMENTO")
'Define Data Range
LastRow = DSheet.Cells(DSheet.Rows.Count, 1).End(xlUp).Row
LastCol = DSheet.Cells(16, DSheet.Columns.Count).End(xlToLeft).Column
Set PRange = DSheet.Cells(16, 1).Resize(LastRow, LastCol)
'Define Pivot Cache
Set PCache = ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=PRange). _
CreatePivotTable(TableDestination:=PSheet.Cells(2, 2), TableName:="TBAutom")
'Insert Blank Pivot Table
Set PTable = PCache.CreatePivotTable(TableDestination:=PSheet.Cells(1, 1), TableName:="TBAutom")
'Insert Row Fields
With ActiveSheet.PivotTables("TBAutom").PivotFields("CLASSE")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("TBAutom").PivotFields("CENTRO TRAB.")
.Orientation = xlRowField
.Position = 2
End With
'Insert Column Fields
With ActiveSheet.PivotTables("TBAutom").PivotFields("SETOR")
.Orientation = xlColumnField
.Position = 1
End With
With ActiveSheet.PivotTables("TBAutom").PivotFields("REVISÃO")
.Orientation = xlRowField
.Position = 2
End With
'Insert Data Field
With ActiveSheet.PivotTables("TBAutom").PivotFields("TIPO")
.Orientation = xlDataField
.Position = 1
.Function = xlCount
.NumberFormat = "###"
.Name = "CONTAGEM DE ORDENS"
End With
'Format Pivot
TableActiveSheet.PivotTables("TBAutom").ShowTableStyleRowStripes = _
TrueActiveSheet.PivotTables("TBAutom").TableStyle2 = "PivotStyleMedium9"
End Sub