Objetivo: Demonstrar a criação de uma tabela dinâmica que abre os detalhes da tabela dinâmica sempre na mesma tabela e também a criação de um hiperlink automaticamente para voltar a planilha da tabela dinâmica.
A tabela dinâmica é uma das melhores ferramentas do Excel, porém ela possui algumas limitações como por exemplo a que demonstro como burlar neste artigo.
Uma das principais funcionalidades de uma tabela dinâmica é realizar o Drill Drown dos dados, exportando estas informações para uma nova planilha, o problema é exatamente este, sempre é uma nova planilha, e logo você tem que ficar excluindo sempre estes dados.
No código comentado abaixo e na planilha em anexo, nós temos um exemplo de como, ao realizar o Drill Drown, abrir estes dados sempre em uma mesma planilha e criar também um hiperlink automaticamente para voltar a planilha inicial.
A planilha se torna bastante prática, dado que você não perderá mais o tempo de excluir a planilha criada, e também não precisará mais ficar procurando a planilha aonde você estava antes.
Abaixo o código comentado, ele deve ser colocado na planilha aonde está a tabela dinâmica:
Sub lsExpandirDados() On Error GoTo Sair Dim lPlanCriada As String Dim lPlanilhaOriginal As String 'Captura o nome da planilha aonde está a tabela dinâmica lPlanilhaOriginal = ActiveSheet.Name & "!" & ActiveCell.Address 'Desabilita mostrar alertas de mostrar mensagens de erro Application.DisplayAlerts = False 'Limpa a planilha dados Sheets("Dados").Range("A:XFD").Clear 'Abre os detalhes do registro da tabela dinâmica Selection.ShowDetail = True 'Guarda o nome da planilha criada lPlanCriada = ActiveSheet.Name 'Copia os dados abertos Selection.Copy 'Cola as informações na tabela dados Sheets("Dados").Select Sheets("Dados").Cells(1, 1).Activate Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False 'Exclui a planilha criada Worksheets(lPlanCriada).Delete 'Organiza as colunas Selection.EntireColumn.AutoFit Worksheets("Dados").Range("B2").Select ActiveWindow.FreezePanes = True Worksheets("Dados").Range("A1").Select Selection.End(xlToRight).Select Worksheets("Dados").Cells(1, ActiveCell.Column + 2).Select ActiveCell.Value = "Voltar" 'Cria o hiperlink ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _ lPlanilhaOriginal, TextToDisplay:="Voltar" Sair: End Sub 'Evento que é chamado antes do duplo clique da planilha Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'Sub que realiza a abertura dos dados lsExpandirDados End SubBaixe a planilha
Abraço
Marcos Rieper