Notifications
Clear all

Filtro de Tabela Dinâmica aceitando qualquer coisa?!

4 Posts
2 Usuários
0 Reactions
1,530 Visualizações
sagrado7
(@sagrado7)
Posts: 32
Eminent Member
Topic starter
 

Meu código de VBA faz com que o valor de uma célula seja o input do filtro da minha tabela dinamica, está funcionando normal, o problema é que quando coloco um mes que não existe, o mesmo entra no filtro sem dar nenhum erro, na verdade o filtro aceita qualquer coisa sem retornar erro, e isso está fazendo o meu gráfico dinamico mostrar valores erroneos. Engraçado é que se entro com um valor que não existe no filtro, o mesmo passa a existir no filtro, então preciso escolher outro mes no filtro e atualiza-la, assim o dado que não existe some da lista do filtro.

Esse é meu código:
Sheets("Grafico").PivotTables("DinamicaConferente").PivotFields("Mês/Ano").CurrentPage = Sheets("Grafico").Range("$AS$78").Value
ActiveSheet.PivotTables("DinamicaConferente").PivotCache.Refresh

A celula AS78 possui o valor que entrará como filtro da tabela, preciso que o filtro da tabela não aceite dados que não existam em seu filtro.
A Tabela está funcionando normalmente quando a celula AS78 possui dados que existam no filtro "Mês/Ano", porém se a celula contiver dados que não existam, a tabela dinamica mostra dados que não deveriam aparecer.

Conte Comigo!
Profissão: Programador VBA Pleno
"Para bom entendedor, meia palavra basta"

 
Postado : 12/01/2015 2:26 pm
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Seria ideal postar seu arquivo modelo!

O que tem neste range a ser filtrado? (datas, textos, etc)

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 12/01/2015 2:45 pm
sagrado7
(@sagrado7)
Posts: 32
Eminent Member
Topic starter
 

Não posso postar o arquivo porque é de empresa, mas tirei dois prints pra mostrar o que acontece, o primeiro mostra o filtro com um dado existente. O segundo mostra o filtro aceitando um dado que não existe! O pior é que não retorna nenhum erro e ainda mostra dados de outro "Mês/Ano". Eu só preciso saber um jeito da tabela não aceitar dados que não existam em seu filtro!

Conte Comigo!
Profissão: Programador VBA Pleno
"Para bom entendedor, meia palavra basta"

 
Postado : 13/01/2015 5:27 am
sagrado7
(@sagrado7)
Posts: 32
Eminent Member
Topic starter
 

Já resolvi o problema com o código abaixo usando For Each, o mesmo verifica se o dado da celula AS78 existe na lista do filtro, se existir o mesmo é exibido, se não o mesmo é ocultado.

Sub Solucao()
On Error GoTo LimparFiltro

'Filtrar determinado campo de TD via celula
Dim objPivotField As PivotField
Dim objPivotItem As PivotItem
Set objPivotField = _
ActiveSheet.PivotTables("DinamicaConferente").PivotFields(Index:="Mês/Ano")
ActiveSheet.PivotTables("DinamicaConferente").ClearAllFilters
For Each objPivotItem In objPivotField.PivotItems
If objPivotItem.Name = Range("$AS$78").Value Then
objPivotItem.Visible = True
Else
objPivotItem.Visible = False
End If
Next objPivotItem

Exit Sub

LimparFiltro:
ActiveSheet.PivotTables("DinamicaConferente").ClearAllFilters

Conte Comigo!
Profissão: Programador VBA Pleno
"Para bom entendedor, meia palavra basta"

 
Postado : 13/01/2015 6:29 am