Olá Lucas, tudo bem com você?
O comando ActiveWorkbook.RefreshAll
é usado para atualizar todas as conexões de dados na pasta de trabalho, incluindo tabelas dinâmicas. Porém, não há um comando específico no VBA que possa garantir que a segunda atualização só ocorra após a primeira ser totalmente concluída. Isso é devido ao fato de que o Excel gerencia a atualização de consultas em segundo plano e não fornece uma maneira direta de verificar se a atualização foi concluída.
Uma alternativa seria criar duas macros separadas: uma para atualizar a consulta e outra para atualizar a tabela dinâmica. Você poderia então executar a primeira macro, esperar que a atualização da consulta seja concluída e depois executar a segunda macro. Isso garantiria que a tabela dinâmica só fosse atualizada após a consulta ser atualizada.
Exemplo:
Sub AtualizarConsulta()
' Código para atualizar a consulta
ActiveWorkbook.RefreshAll
End Sub
Sub AtualizarTabelaDinamica()
' Código para atualizar a tabela dinâmica
ActiveWorkbook.RefreshAll
End Sub
Depois de criar essas duas macros, você poderia executá-las em sequência, garantindo um intervalo de tempo adequado entre elas.
Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade. Em caso de dúvidas estou à disposição. Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!