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"
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
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"
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"