Uma família de softwares de planilhas da Microsoft com ferramentas para analisar, criar gráficos e comunicar dados
Já avancei no código, porém ainda não está funcionando corretamente.
Agora ele sempre imprime 0 quando há alguma alteração na segmentação de dados. Antes nunca imprimia nada em momento algum. Conseguimos um avanço. Porém o que preciso é que, quando nenhum filtro estiver selecionado ele imprima 0, quando algum filtro estiver selecionado ele imprima 1.
O código tá assim:
Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)
' Atualiza a célula B3 na planilha 'DRE TOTAL' com 1 se houver filtros ativos, 0 se não houver
ThisWorkbook.Sheets("DRE TOTAL").Range("B3").Value = IIf(ExistemFiltrosAtivos(), 1, 0)
End Sub
Function ExistemFiltrosAtivos() As Boolean
' Verifica se há filtros ativos em qualquer das Segmentações de Dados especificadas
Dim slicer As slicer
Dim slicerNames As Variant
Dim name As Variant
' Define os nomes das Segmentações de Dados
slicerNames = Array("Descr Un Analítica", "Un resumo", "Un gestor", "Un Operação")
' Itera por cada nome de Segmentação de Dados
For Each name In slicerNames
On Error Resume Next ' Ignora erros
Set slicer = ActiveWorkbook.Slicers(name)
On Error GoTo 0 ' Para de ignorar erros
' Verifica se a Segmentação de Dados existe
If Not slicer Is Nothing Then
' Verifica se há filtros ativos na Segmentação de Dados
If slicer.SlicerCache.VisibleSlicerItems.Count < slicer.SlicerCache.SlicerItems.Count Then
ExistemFiltrosAtivos = True
Exit Function ' Sai do loop se encontrar qualquer filtro ativo
End If
End If
Next name
' Se não houver filtros ativos em nenhuma Segmentação de Dados, retorna Falso
ExistemFiltrosAtivos = False
End Function