none
Laço para percorrrer todos os itens de um filtro RRS feed

  • Pergunta

  • Olá pessoal,

    Estou escrevendo uma macro e enrosquei em uma parte.

    De acordo, com a opção selecionada em uma lista suspensa uma planilha é filtrada, por exemplo:

    Sub Selecao()
    
        Dim nome As String
        
        nome = Cells(c28).Value
      
        With ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("AMBIENTE")
            .PivotItems(nome).Visible = True
        
        End With
    
    End Sub

    Porém, eu preciso que os outros itens fiquem desabilitados... e são muitos itens.

    Tem alguma sintaxe para eu desabilitar todos os itens e só depois habilitar conforme o exemplo do código?

    Ou

    Como posso fazer um laço Tipo:

    For Each PivotItems In PivotFields()

    verificar SE o item for diferente da variável, tornar a propriedade .visible = false..

    Valeu,


    • Editado DaFreitas segunda-feira, 29 de dezembro de 2014 15:29
    segunda-feira, 29 de dezembro de 2014 15:28

Respostas

  • Em primeiro lugar, estou estranhando bastante a expressão:

    nome = Cells(c28).Value

    Tem certeza que é isso mesmo?

    ---

    Sobre sua dúvida, tente algo como:

    Sub Selecao()
      Dim oItem As Excel.PivotItem
      
      For Each oItem In ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("AMBIENTE").PivotItems
        If oItem.Name <> nome Then
          oItem.Visible = False
        Else
          oItem.Visible = False
        End If
      Next oItem
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    segunda-feira, 29 de dezembro de 2014 22:19
    Moderador

Todas as Respostas

  • Em primeiro lugar, estou estranhando bastante a expressão:

    nome = Cells(c28).Value

    Tem certeza que é isso mesmo?

    ---

    Sobre sua dúvida, tente algo como:

    Sub Selecao()
      Dim oItem As Excel.PivotItem
      
      For Each oItem In ActiveSheet.PivotTables("Tabela dinâmica1").PivotFields("AMBIENTE").PivotItems
        If oItem.Name <> nome Then
          oItem.Visible = False
        Else
          oItem.Visible = False
        End If
      Next oItem
    End Sub


    Felipe Costa Gualberto - http://www.ambienteoffice.com.br

    segunda-feira, 29 de dezembro de 2014 22:19
    Moderador
  • Valeu cara,

    Estava errado mesmo aquela parte.

    Ajudou muito.

    segunda-feira, 5 de janeiro de 2015 13:33