Notifications
Clear all

Usar Macro para Selecionar Vários Itens Filtro na TD

5 Posts
3 Usuários
0 Reactions
1,439 Visualizações
(@davalos)
Posts: 5
Active Member
Topic starter
 

Boa Tarde

Tenho o seguinte código que encontrei na internet que me auxiliou com
seguinte problema tenho uma tabela de dinâmica onde quero aplicar o filtro de uma lista no Excel

Esse codigo deu certo para (Números Inteiros )

Sub AtualizarDia()
On Error GoTo ErroAtualizarDia

Dim PrimeiraLinhaDW As Long, UltimaLinhaDW As Long, NomeTabelaDW As String

PrimeiraLinhaDW = 2
UltimaLinhaDW = Sheets("PARAMETROS").Cells(1, 1).End(xlDown).Row

'Executa o processo conforme a quantidade de tabelas dinâmicas existentes
For i = PrimeiraLinhaDW To UltimaLinhaDW
     NomeTabelaDW = Sheets("PARAMETROS").Cells(i, 1).Text
     
     'Atualiza a tabela dinâmica somente na 1ª vez que o processo é executado
     If i = 2 Then
          ActiveSheet.PivotTables(NomeTabelaDW).PivotCache.Refresh
     End If

     'Limpa os filtros
     ActiveSheet.PivotTables(NomeTabelaDW).PivotFields("Dia").ClearAllFilters

     'Executa o processo para cada um dos dias do mês
     For j = 1 To 31
          ActiveSheet.PivotTables(NomeTabelaDW).PivotFields("DIA").PivotItems(j).Visible = Worksheets("PARAMETROS").Cells(j + 1, 6).Value
     Next j
     
Next i

Fim:
     Exit Sub

ErroAtualizarDia:
    
     If Err.Number = 1004 Then
          Resume Next
     Else
          Mensagem = Err.Number & " " & Err.Description
          MsgBox Mensagem, vbInformation, Titulo
     End If

End Sub

Porém estou tentando adaptar esse código para aplicação de filtro com datas

Sub AtualizarData()
On Error GoTo ErroAtualizarData

Dim PrimeiraLinhaDW As Long, UltimaLinhaDW As Long, NomeTabelaDW As String

PrimeiraLinhaDW = 2
UltimaLinhaDW = Sheets("PARAMETROS").Cells(1, 1).End(xlDown).Row

'Executa o processo conforme a quantidade de tabelas dinâmicas existentes
For i = PrimeiraLinhaDW To UltimaLinhaDW
     NomeTabelaDW = Sheets("PARAMETROS").Cells(i, 1).Text
     
     'Atualiza a tabela dinâmica somente na 1ª vez que o processo é executado
     If i = 2 Then
          ActiveSheet.PivotTables(NomeTabelaDW).PivotCache.Refresh
     End If

     'Limpa os filtros
     ActiveSheet.PivotTables(NomeTabelaDW).PivotFields("Data").ClearAllFilters

     'Executa o processo para cada um dos dias do mês
     For j = 1 To 62
          ActiveSheet.PivotTables(NomeTabelaDW).PivotFields("Data ").PivotItems(j).Visible = Worksheets("PARAMETROS").Cells(j + 1, 11).Value
     Next j
     
Next i

Fim:
     Exit Sub

ErroAtualizarData:
    
     If Err.Number = 1004 Then
          Resume Next
     Else
          Mensagem = Err.Number & " " & Err.Description
          MsgBox Mensagem, vbInformation, Titulo
     End If

End Sub

Caso alguém já tenha realizado esse tipo de correção ou tenha mais experiencia e identifique onde
estou errado no código gostaria de alguma dica

Estou colocando o arquivo Exemplo Anexo

 
Postado : 07/08/2017 1:52 pm
(@gesus)
Posts: 44
Eminent Member
 

O Erro está nas tratativas de erro? Tipo assim: O Limpar filtro está dando erro, como tem tratativa de erro você acaba não vendo, limpa a tabela 2 antes de executar e executa não irá dar erro!

Att

 
Postado : 09/08/2017 2:37 pm
(@davalos)
Posts: 5
Active Member
Topic starter
 

Boa tarde

Mas o Limpar Filtros tb está no trecho para números inteiros e não da erro é mesmo script porém um trabalho com Datas e no outro com números
inteiros

 
Postado : 23/08/2017 10:06 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Leia:
http://www.globaliconnect.com/excel/ind ... Itemid=475

Att

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/08/2017 10:28 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Eu havia começado a mexer neste modelo que acredito retirou do site ( https://guiadoexcel.com.br/marcar-vario ... mente-vba/), mas o tempo é curto e como não mexo muito com TD estava pesquisando, mas cheguei no seguinte :
Primeiro formatamos a origem dos dados (DATAS) para Numeros, e filtramos, mas não consegui converter o filtro da TD para data e tambem eliminar os em branco e os não selecionados.

Os links que cheguei a ver, e mesmo este que o Alexadre passou, utlizam de forma diferente, é filtrado or data sem converte-las mas quando o filtro está na coluna.
Vou continuar pesquisando na medida do possível, mas segue o que consegui fazer, assim quem sabe alguem mais da uma ajuda.

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 23/08/2017 1:14 pm