Bem… Quem precisa fazer relatórios gerenciais sabe da necessidade de ter segmentação.

Com a Segmentação de Dados a planilha fica com uma melhor estética, mais intuitivo….

Abaixo coloquei códigos para manipular segmentação (criar segmentação, alterar aparência, habilitar e desabilitar campos, ordenar e excluir) e assim você pode deixar seu relatório mais automático.

Disponibilizei no final do post o vídeo para ver na prática o código sendo executado

 

Imagem para explicar onde fica cada nome usado no código

configuracoes_segmentacao

 

Sub MANIPULANDO_SEGMENTACAO()
Dim i As SlicerCaches
Dim j As Slicers
Dim k As Slicer

'NOME_TESTE = nome a ser usado em fórmulas da segmentação
'REGIAO = nome do campo da tabela dinamica
'RIGIOES = nome da legenda da segmentação
'MINHA_REGIAO = nome da segmentação

Set i = ActiveWorkbook.SlicerCaches
Set j = i.Add(ActiveSheet.PivotTables(1), "REGIAO", "NOME_TESTE").Slicers
Set k = j.Add(ActiveSheet, , "MINHA_REGIAO", "REGIOES", 0, 0, 200, 200)
MsgBox "Criado Segmentação"
'----------------------------------------------MUDANDO NOME E LEGENDA DA SEGMENTACAO

k.Name = "Nome_Segmentacao"       'Or use j(1).Name = "Nome_Segmentacao"
k.Caption = "Nova_Legenda"               'Or use j(1).Caption = "Nova_Legenda"
MsgBox "Alterado nome e legenda da Segmentação"

'----------------------------------------------HABILITANDO E DESABILITANDO CAMPOS

'desabilitando
i("NOME_TESTE").SlicerItems("Leste").Selected = False
'Você também pode usar
k.SlicerCache.SlicerItems("Leste").Selected = False
'Ou ainda
k.SlicerCache.SlicerItems(1).Selected = False
MsgBox "Desabilita Leste"
'habilitando
i("NOME_TESTE").SlicerItems("Leste").Selected = True
'Or
k.SlicerCache.SlicerItems("Leste").Selected = True
MsgBox "Habilita Leste"

'--------------------------------------------ALTERANDO APARENCIA

k.Top = 200
k.Left = 200
'OR
'j("MINHA_REGIAO").Top = 200
'j("MINHA_REGIAO").Left = 200

MsgBox "Segmentação reposicionada"
k.Shape.ScaleWidth 0.4, msoFalse, msoScaleFromTopLeft
k.Shape.ScaleHeight 0.6, msoFalse, msoScaleFromTopLeft
MsgBox "Alterado Campo Segmentação da altura da linha e tamanho"
k.RowHeight = 8.4
k.ColumnWidth = 358.4
MsgBox "Alterado Campo Segmentação da altura da linha e tamanho"
k.Style = "SlicerStyleLight3"
MsgBox "Alterado cor"

'--------------------------------------------ALTERANDO ORDEM DOS CAMPOS

k.Caption = "SLICER - ORDEM"
k.DisplayHeader = True
k.SlicerCache.CrossFilterType = xlSlicerNoCrossFilter ' OU xlSlicerCrossFilterShowItemsWithNoData / xlSlicerCrossFilterShowItemsWithDataAtTop
k.SlicerCache.SortItems = xlSlicerSortDescending 'OU xlSlicerSortAscending
k.SlicerCache.SortUsingCustomLists = True
k.SlicerCache.ShowAllItems = False
'-------------------------------------------EXCLUINDO

k.Delete
'Ou
'j("MINHA_REGIAO").Delete
MsgBox "Segmentação Excluída"

End sub

 

_____________________________________________

 

 

 

‘ macro slicer, vba criar slicer, vba slicer