Usuário com melhor resposta
Laço para percorrrer todos os itens de um filtro

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
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
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quinta-feira, 8 de janeiro de 2015 12:49
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
- Marcado como Resposta Felipe Costa GualbertoMVP, Moderator quinta-feira, 8 de janeiro de 2015 12:49
-