Notifications
Clear all

Código para manipular um filtro segundo condições.

3 Posts
1 Usuários
0 Reactions
1,174 Visualizações
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Na aba "Principal", tenho:

1 ) a célula A1 que poderá apresentar um dos seguintes valores: Pardal, Piriquito ou Papagaio.

2 ) na coluna C, começando pela linha 1, temos:
Campos:
Pardal
Pardal
pardal
Piriquito
Piriquito
Papagaio

3 ) filtro no topo da coluna C.

Desejo uma macro que manipule o filtro da coluna C conforme o valor inserido na célula A1. Ou seja, se a célula A1 for igual a Pardal, o filtro mostrará apenas os valores iguais a Pardal após a macro rodar.

Abraços;

 
Postado : 24/10/2011 11:51 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Boa noite!!!

Teria que usar um filtro em VBA, e depois uma formula "Se"....

Poderia postar sua planilha...

Exemplo não adaptado.

Sub Filtrar()
'Faz a filtragem do nº de registro
    Sheets("Base").Select
    Dim myNºdeRegistro
    myNºdeRegistro = ActiveCell.Value
    Range("m1:m7700").Select

    If myNºdeRegistro = "" Then
        Selection.AutoFilter
        Range("R1").Select
    Else
        Selection.AutoFilter Field:=1, Criteria1:="=" & myNºdeRegistro, Operator:=xlAnd
        ActiveSheet.PageSetup.PrintArea = ActiveCell.CurrentRegion.Address
        Range("T1").Select

    End If
End Sub

Att..

 
Postado : 24/10/2011 5:18 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Uma outra sugestão, lembrando que os dados na Coluna "C" em C1 temos o Cabeçalho, para evitar erro na Filtragem :

Aba "Principal"
Em A1 Defina o Nome : Criterios e em Refere-se a: coloque a formula: =Principal!$A$1:$A$1

Em C1 Defina o Nome : Banco_de_Dados e em Refere-se a: coloque a formula: =DESLOC(Principal!$C$1;0;0;CONT.VALORES(Principal!$C:$C);1)

No Evento Change da Aba Principal coloque a Rotina:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim wsDados As Worksheet
    Set wsDados = Worksheets("Principal")
  
    If Target.Address = "$A$1" And Target.Value <> "" Then
        'Aplica o Filtro
        wsDados.Range("C2").AutoFilter field:=1, Criteria1:=Range("A1"), VisibleDropDown:=False
    
    Else
        
        On Error Resume Next
        'Limpa o Filtro
        wsDados.ShowAllData

    End If

End Sub

[]s

 
Postado : 24/10/2011 7:57 pm