Configurando e iniciando o autofiltro no Excel

0

Eu tenho uma planilha e ele vincula a outra pasta de trabalho. O problema é quando o filtro está ligado, não muda à medida que novos dados são adicionados; você tem que refilter os dados.

(Cliquenaimagemparaampliar)

Euseiqueexisteumamaneiradetê-lonofiltroautomáticoàmedidaqueosdadosaparecemusandoumamacro.EutenhotentadodescobriroMacropor5horasagoraenãoconsigoacertar.Omaispróximoqueobtiveédefinirumfiltroe,quandonovosdadosaparecem,apagaofiltroeadicionatodososdadosjuntos.Euprecisodofiltroparaficar!

PrivateSubWorksheet_Change(ByValTargetAsRange)IfMe.FilterMode=TrueThenWithApplication.EnableEvents=False.ScreenUpdating=FalseEndWithWithActiveWorkbook.CustomViews.AddViewName:="B2", RowColSettings:=True
          Me.AutoFilterMode = False
            .CustomViews("B2").Show
            .CustomViews("B2").Delete
        End With


         With Application
           .EnableEvents = True
           .ScreenUpdating = True
        End With
    End If

End Sub
    
por Mitch 26.11.2015 / 03:36

1 resposta

0

Essencialmente, tudo o que você precisa é "atualizar" o filtro dizendo ao Excel para filtrar as mesmas condições no novo intervalo de dados.

Observe que o uso de UsedRange implica que todos os dados estejam em linhas e colunas contíguas. Além disso, ajuste os argumentos AutoFilter conforme necessário.

Como seus dados estão vinculados por meio de fórmulas, o Worksheet_Change nunca será acionado quando as fórmulas são atualizadas. Você precisará usar o evento Worksheet_Calculate , mas lembre-se de que isso irá disparar toda vez que a planilha for calculada, o que pode ou não ser oneroso.

Eu também alterei seu If condicional para IF Me.AutoFilterMode = True , pois o FilterMode não será verdadeiro se nada for realmente filtrado, mesmo que os filtros estejam ativados.

Private Sub Worksheet_Calculate()

    If Me.AutoFilterMode = True Then

        With Application
           .EnableEvents = False
           .ScreenUpdating = False
        End With

        Me.UsedRange.AutoFilter 2, "North" 'filters column B for myFilter value change as needed

         With Application
           .EnableEvents = True
           .ScreenUpdating = True
        End With

    End If

End Sub
    
por 26.11.2015 / 04:09