Filtrar campo de Tabela Dinamica (VBA)
3 participantes
Página 1 de 1
Filtrar campo de Tabela Dinamica (VBA)
Boa noite!!
Usar célula para filtrar campo de tabela dinâmica
Att
Usar célula para filtrar campo de tabela dinâmica
- Código:
Option Explicit
Sub FiltrarCampoTD()
'Filtrar determinado campo de TD via celula
Dim objPivotField As PivotField
Dim objPivotItem As PivotItem
Set objPivotField = _
ActiveSheet.PivotTables(1).PivotFields(Index:="NomeCampo")
ActiveSheet.PivotTables("NomeTabelaDinamica").ClearAllFilters
For Each objPivotItem In objPivotField.PivotItems
If objPivotItem.Name = Range("Celula") Then
objPivotItem.Visible = True
Else
objPivotItem.Visible = False
End If
Next objPivotItem
ActiveWorkbook.RefreshAll
End Sub
Att
alexandrevba- Intermediário
- Mensagens : 222
Data de inscrição : 26/06/2012
Localização : Serra-ES
Re: Filtrar campo de Tabela Dinamica (VBA)
Boa tarde.
Gostaria de uma forma mais rápida para desmarcar os filtros diferentes da célula com a informação. Ele fica lendo várias vezes o filtro e desmarcando o resto. Tem uma forma de desmarcar tudo de uma vez, exceto o filtro?
Aliás, excelente compartilhamento. Obrigado!
Gostaria de uma forma mais rápida para desmarcar os filtros diferentes da célula com a informação. Ele fica lendo várias vezes o filtro e desmarcando o resto. Tem uma forma de desmarcar tudo de uma vez, exceto o filtro?
Aliás, excelente compartilhamento. Obrigado!
nandofb11- Iniciante
- Mensagens : 4
Data de inscrição : 26/07/2014
Re: Filtrar campo de Tabela Dinamica (VBA)
Boa noite!!
Abra um tópico, deposite seu modelo em site gratuito, depois poste seu link aqui!!
Att
Abra um tópico, deposite seu modelo em site gratuito, depois poste seu link aqui!!
Att
alexandrevba- Intermediário
- Mensagens : 222
Data de inscrição : 26/06/2012
Localização : Serra-ES
Re: Filtrar campo de Tabela Dinamica (VBA)
Boa tarde.
Segue, https://usuariosdoexcel.forumeiros.com/t166-filtrar-conteudo-de-tabela-dinamica#477
Obrigado.
Segue, https://usuariosdoexcel.forumeiros.com/t166-filtrar-conteudo-de-tabela-dinamica#477
Obrigado.
nandofb11- Iniciante
- Mensagens : 4
Data de inscrição : 26/07/2014
Re: Filtrar campo de Tabela Dinamica (VBA)
alexandrevba escreveu:Boa noite!!
Usar célula para filtrar campo de tabela dinâmica
- Código:
Option Explicit
Sub FiltrarCampoTD()
'Filtrar determinado campo de TD via celula
Dim objPivotField As PivotField
Dim objPivotItem As PivotItem
Set objPivotField = _
ActiveSheet.PivotTables(1).PivotFields(Index:="NomeCampo")
ActiveSheet.PivotTables("NomeTabelaDinamica").ClearAllFilters
For Each objPivotItem In objPivotField.PivotItems
If objPivotItem.Name = Range("Celula") Then
objPivotItem.Visible = True
Else
objPivotItem.Visible = False
End If
Next objPivotItem
ActiveWorkbook.RefreshAll
End Sub
Att
Valeu Mesmo Alexandre! Mas não está funcionando com datas, comparando a data 01/01/2015 na celula A1 com a que está no filtro da dinamica dá FALSO! O depurador acusa tipos incompativeis no objPivotItem.
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Achei a solução pessoal!
Reformulei o código: formato a data como padrão norte americano, comparo a data formatada com a da lista do filtro, se existir eu formato a data para o padrão brasileiro e atribuo a data ao filtro.
Espero que isso ajude o pessoal que precise trabalhar setando datas abreviadas (dd/mm/aaaa) na Tabela Dinamica por VBA.
Código Funcional:
Dim DataFormatada As Date
Dim objPivotField As PivotField
Dim objPivotItem As PivotItem
DataFormatada = Format(Range("CELULA QUE ESTÁ A DATA").Value, "m/d/yyyy")
Set objPivotField = ActiveSheet.PivotTables("DinamicaData").PivotFields(Index:="Data")
ActiveSheet.PivotTables("TabelaDinamicaData").PivotFields("Data").ClearAllFilters
For Each objPivotItem In objPivotField.PivotItems
If objPivotItem.Name = DataFormatada Then
DataFormatada = Format(Range("CELULA QUE ESTÁ A DATA").Value, "dd/mm/yyyy")
ActiveSheet.PivotTables("TabelaDinamicaData").PivotFields("Data").CurrentPage = Range("C2").Value
Else
End If
Next objPivotItem
ActiveSheet.ChartObjects("Gráfico 1").Activate
ActiveChart.ChartTitle.Text = "Data - " & Range("CELULA DO FILTRO DE DATA DA TABELA DINAMICA").Value
If ActiveChart.ChartTitle.Text = "Data - (Tudo)" Then MsgBox "Sem dados para os critérios selecionados", vbInformation, "Atenção"
sagrado7- Iniciante
- Mensagens : 1
Data de inscrição : 13/01/2015
Tópicos semelhantes
» Filtrar conteúdo de Tabela Dinâmica
» Como criar Tabela Dinâmica 2 (VBA)
» Como criar Tabela Dinâmica (VBA)
» Tabela Dinâmica - Contar rótulos de linha
» Fixar intervalo de tabela dinâmica em fórmula
» Como criar Tabela Dinâmica 2 (VBA)
» Como criar Tabela Dinâmica (VBA)
» Tabela Dinâmica - Contar rótulos de linha
» Fixar intervalo de tabela dinâmica em fórmula
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos