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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
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