none
Seleção Conectada entre duas Caixas de Segmentação de Dados (Slicer) RRS feed

  • Pergunta

  • Olá,

    Gostaria de obter uma ajuda com uma solução em VBA.

    Tenho duas tabelas dinâmicas, cada uma gerada de uma base de dados.

    O objetivo é que ao selecionar um dos itens na segmentação de dados, o mesmo item seja selecionado na outra caixa de segmentação.

    Como poderia fazer isso?

    Obrigado,

    sexta-feira, 26 de dezembro de 2014 12:15

Respostas

  • Olá! Como não sei os itens da sua caixa de segmentação, vou postar um código supondo que item de segmentação é "Estado", que contém 3 valores: "São Paulo", "Rio de Janeiro" e "Minas", então a partir deste código você altera conforme sua necessidade:

    Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim bMG As Boolean
    Dim bSP As Boolean
    Dim bRJ As Boolean
    '
    bMG = ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Estado").SlicerItems("minas").Selected
    bSP = ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Estado").SlicerItems("São Paulo").Selected
    bRJ = ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Estado").SlicerItems("Rio de Janeiro").Selected
    
        With ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Estado1")
            .SlicerItems("Minas").Selected = bMG
            .SlicerItems("São Paulo").Selected = bSP
            .SlicerItems("Rio de Janeiro").Selected = bRJ
        End With
     
    End Sub

    O código deve ser adicionado ao módulo da planilha onde está a primeira tabela dinâmica criada.

    Tente adaptar e qualquer dúvida pergunte.

    Abs!


    Rafael Kamimura


    sexta-feira, 26 de dezembro de 2014 15:17

Todas as Respostas

  • Olá! Como não sei os itens da sua caixa de segmentação, vou postar um código supondo que item de segmentação é "Estado", que contém 3 valores: "São Paulo", "Rio de Janeiro" e "Minas", então a partir deste código você altera conforme sua necessidade:

    Private Sub Worksheet_Change(ByVal Target As Range)
    
    Dim bMG As Boolean
    Dim bSP As Boolean
    Dim bRJ As Boolean
    '
    bMG = ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Estado").SlicerItems("minas").Selected
    bSP = ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Estado").SlicerItems("São Paulo").Selected
    bRJ = ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Estado").SlicerItems("Rio de Janeiro").Selected
    
        With ActiveWorkbook.SlicerCaches("SegmentaçãodeDados_Estado1")
            .SlicerItems("Minas").Selected = bMG
            .SlicerItems("São Paulo").Selected = bSP
            .SlicerItems("Rio de Janeiro").Selected = bRJ
        End With
     
    End Sub

    O código deve ser adicionado ao módulo da planilha onde está a primeira tabela dinâmica criada.

    Tente adaptar e qualquer dúvida pergunte.

    Abs!


    Rafael Kamimura


    sexta-feira, 26 de dezembro de 2014 15:17
  • Opa Rafael,

    Era isso mesmo que eu precisava.

    Obrigado pela ajuda!

    segunda-feira, 29 de dezembro de 2014 01:32
  • Rafael,

    Então, eu tentei aplicar a ideia, porém não funcionou..

    Eu criei um exemplo, conforme o exemplo do código, mas está dando um erro na linha

      .SlicerItems("Minas").Selected = bMG
    

    o que poderia estar errado?

    Abs,

    segunda-feira, 29 de dezembro de 2014 16:38
  • Putz descobri o erro

    Por causa de um espaço em "Minas " ¬¬

    valeu,

    segunda-feira, 29 de dezembro de 2014 17:00