Como evitar vários acionadores de PivotTableUpdate

0

Estou construindo um painel no qual três controles deslizantes controlam 10 tabelas dinâmicas em uma segunda planilha de dados. Eu também tenho um desenho de mapa nos dados dinâmicos. Isso é preenchido por uma macro que precisa ser acionada sempre que uma seleção é feita no slicer. Depois de ler perguntas antigas e outros fóruns, usei o código a seguir, colocado na planilha que contém os pivots.

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)

Application.EnableEvents = False

Call UpdateMaps

Application.EnableEvents = True

End Sub

Com isso, as alterações nos controles deslizantes do ativam a macro para atualizar o mapa, mas, apesar da ativação EnableEvents, ele é acionado 10 vezes; uma vez para cada uma das tabelas dinâmicas e, portanto, é muito lenta. Estou esquecendo de algo? Existe uma maneira de ter apenas um acionamento da macro, o que ocorreria depois que todas as tabelas dinâmicas terminassem a atualização das seleções do Slicer?

    
por Will 16.10.2017 / 10:56

1 resposta

0

Você pode limitar a execução quando uma Tabela Dinâmica específica for atualizada da seguinte forma:

Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
If Target.Name = "PivotTable1" then  UpdateMaps
End Sub

Não se preocupe em desativar eventos. Altere "Tabela Dinâmica1" para o nome de uma das suas Tabelas Dinâmicas (a menos que você já tenha uma chamada "Tabela Dinâmica1" em sua pasta de trabalho)

    
por 17.10.2017 / 12:28