Vídeo recomendado
https://youtu.be/Ju8Esra5--I

DESMARCAR VAZIO EM TABELA DINÂMICA AO LIMPAR FILTRO DE SEGMENTAÇÃO DE DADOS

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
alexlounofre
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Ter Mar 07, 2023 12:06 pm

DESMARCAR VAZIO EM TABELA DINÂMICA AO LIMPAR FILTRO DE SEGMENTAÇÃO DE DADOS

Mensagem por alexlounofre »

Saudações, caros usuários,

Preciso de uma valiosa ajuda:
Tenho uma tabela dinâmica derivada de um intervalo de dados que inevitavelmente tem algumas linhas em branco, e consequentemente a referida tabela dinâmica apresenta o item (vazio) em rótulos de linhas. Até aí, o simples filtrar, desmarcando o item (vazio) resolveria a questão, mas o problema é que, dessa tabela dinâmica, gerei um gráfico para análise, bem como uma segmentação de dados para dinamizar a consulta, e daí, toda vez que limpo o filtro da segmentação, o item (vazio) acaba reaparecendo, não só na tabela como também no gráfico.
Alguém poderia sugerir um código para que, toda vez que a segmentação for "limpa", automaticamente o item (vazio) seja novamente desmarcado na tabela dinâmica?
Em anexo vai o print da planilha de exemplo para melhor esclarecimento da questão.

Desde já fico muito grato pela ajuda.
Anexos
Print.jpeg
Print.jpeg (209.15 KiB) Exibido 15728 vezes


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


alexlounofre
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Ter Mar 07, 2023 12:06 pm

Re: DESMARCAR VAZIO EM TABELA DINÂMICA AO LIMPAR FILTRO DE SEGMENTAÇÃO DE DADOS

Mensagem por alexlounofre »

Bem, estou postando a resposta obtida em outro fórum, por meio de um colaborador prestativo que me ajudou muito com a solução. O código consiste em uma private sub, conforme abaixo:

Private Sub Worksheet_PivotTableChangeSync(ByVal Target As PivotTable)

'Desmarca item (vazio) na tabela dinâmica ao limpar segmentação
On Error Resume Next

Static n As Long

n = n + 1

If n > 1 Then Exit Sub


    ActiveSheet.PivotTables("nome da tabela dinâmica").PivotFields("nome do campo").PivotFilters _
        .Add2 Type:=xlCaptionDoesNotEqual, Value1:="(vazio)"

'A linha abaixo é uma outra alternativa que também funciona:
'Target.PivotFields("nome do campo").PivotFilters _
        .Add2 Type:=xlCaptionDoesNotEqual, Value1:="(vazio)"


n = 0

End Sub


Espero que possa ajudar mais pessoas que porventura tenham a mesma dúvida.


Responder