Estou usando o código simples abaixo para atualizar a tabela dinâmica automaticamente quando quaisquer dados são alterados na tabela de origem, o que funciona normalmente se a tabela dinâmica e a fonte de dados estiverem em planilhas diferentes.
Dim wb As Workbook
Dim ws As Worksheet
Dim pt As PivotTable
Set wb = ActiveWorkbook
For Each ws In wb.Sheets
For Each pt In ws.PivotTables
pt.PivotCache.Refresh
Next pt
Next ws
Eu poderia ter usado simplesmente, mas quero atualizar apenas as tabelas dinâmicas.
ActiveWorkbook.RefreshAll
Estou usando-o no WorksheetChange
Private Sub Worksheet_Change(ByVal Target As Range)
mas estou recebendo um erro se a tabela dinâmica e a tabela de origem estiverem na mesma planilha.
Código de erro: -2147417848 (80010108) O método 'createpivottable' do objeto 'pivotcache' falhou
Existe uma maneira de manter a fonte e a tabela dinâmica na mesma planilha?
Obrigado,
Você deve desabilitar eventos durante a atualização, já que você estará alterando a planilha a partir do evento Change - use
application.enableevents = false
no início e defina-o de volta como True no final. Em outras palavras: