Notifications
Clear all

Procedimento para Filtrar, ocultar ou visualizar.

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

Estou com uma planilha onde somo horas trabalhadas.
tenho na linha d3:fd3, dados tipo 10/10 a 04/11 (dados que considero como meses).
Criei uma macro para filtrar dados diferentes de "o".:

Sub resumo()
'
' resumo Macro
' Filtrar dados dierentes de 0.
'FE é a coluna em que as células recebem a fórmula soma.

ActiveSheet.Range("$FE$4:$FE$43").AutoFilter Field:=1, Criteria1:="<>0", _
Operator:=xlAnd

End Sub

O que eu gostaria é que além de fazer o filtro, esta macro ocultasse as colunas entre d3:fd3, diferente de fg3. Fg3 recebe os dados tipo: 10/10, 11/10 e outros.
ex: se fg=10/10, ocultar d3:fd3<>fg3.
Eu postei esta questão no fórum de macros, só que, estou achando que se trata mais de um procedimento em vba.
Sei que se trata de um caso de repetição, case ou outro.
Alguém poderia me ajudar?
Grato

 
Postado : 23/11/2010 8:25 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

E aí pessoal.
Consegui criar uma macro para ocultar as colunas segundo o valor em uma célula.
Como dito antes, os dados inseridos em AE1 (10/10, 11/10 até 02/11), são comparados com dados no intervalo: d4:dv4.
O código ficou assim:

Sub Oculta()
If Range("EA1").Value = "10/10" Then
Columns("D:AB").Hidden = False
Columns("AC:DV").Hidden = True
ElseIf Range("EA1").Value = "11/10" Then
Columns("AC:BG").Hidden = False
Columns("BH:DV").Hidden = True
Columns("D:AB").Hidden = True
ElseIf Range("EA1").Value = "12/10" Then
Columns("BH:CK").Hidden = False
Columns("D:BG").Hidden = True
Columns("CL:DV").Hidden = True
ElseIf Range("EA1").Value = "01/11" Then
Columns("CL:DP").Hidden = False
Columns("D:CK").Hidden = True
Columns("DQ:DV").Hidden = True
ElseIf Range("EA1").Value = "02/11" Then
Columns("DQ:DV").Hidden = False
Columns("D:DP").Hidden = True

End If

End Sub

Está funcionando perfeitamente.
Sei que posso fazê-lo de outras formas mas ainda não tentei (case e outros).
Caso alguém possa me ajudar a enriquecer um pouco mais meus conhecimentos eu agradeço.
Existe uma contrariedade quanto as Macros por alguns e até recomendações para que usem somente o VBA. Caso possam me dar dicas de como trabalhar esses códigos de outra forma eu agradeço.
Eu uso o office mas não trabalho na área de programação.
Um autor disse uma vêz que, quem não sabe VBA, sabe no máximo 5% de excel.
Estou cada dia mais crente nesta afirmação.
Grato e aguardo respostas.

 
Postado : 24/11/2010 1:45 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Uma alternativa usando Select case:

Sub OcultaCase()

sValor = Range("EA1")

    Select Case sValor
    
        Case "10/10"
            Columns("D:AB").Hidden = False
            Columns("AC:DV").Hidden = False
        
        Case "11/10"
            Columns("AC:BG").Hidden = False
            Columns("BH:DV").Hidden = True
            Columns("D:AB").Hidden = True
        
        Case "12/10"
            Columns("BH:CK").Hidden = False
            Columns("D:BG").Hidden = True
            Columns("CL:DV").Hidden = True
        
        Case "01/11"
            Columns("CL:DP").Hidden = False
            Columns("D:CK").Hidden = True
            Columns("DQ:DV").Hidden = True
        
        Case "02/11"
            Columns("DQ:DV").Hidden = False
            Columns("D:DP").Hidden = True
        
        Case Else
            MsgBox "Nenhuma das Alternativas"
            
    End Select

End Sub

[]s

 
Postado : 24/11/2010 5:56 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Valeu Mauro. Eu adaptei o código postado anteriomente a uma outra planilha e acrescentei a este um outro procedimento para que além de ocultar as colunas com visualizações desnecessárias, fizesse também um filtro ocultando dados com valor "0".
Vou utilizá-lo com o select case e daí eu o postarei aqui.
Grato.

 
Postado : 24/11/2010 7:55 pm
(@fernandofernandes)
Posts: 43750
Illustrious Member
Topic starter
 

Como eu tinha prometido deixo aqui a minha macro com a versão case, oferecida pelo colega Mauro. Esse código foi adequado para uma outra planilha.
Meus agradecimentos ao Caro colega pelo apoio e que esse código, ainda que simples possa ajudar outros iniciantes como eu.
Grato.

Sub OcultaCase()

' Filtrar dados dierentes de 0 na coluna FE.
ActiveSheet.Range("$FE$4:$FE$43").AutoFilter Field:=1, Criteria1:="<>0", _
Operator:=xlAnd

' Oculta as colunas que não possuem o Mês referenciado na célula FG3.
sValor = Range("FG3")
Select Case sValor
Case "11/10"
Columns("D:AH").Hidden = False
Columns("AI:FD").Hidden = True

Case "12/10"
Columns("AI:BL").Hidden = False
Columns("D:AH").Hidden = True
Columns("BM:FD").Hidden = True

Case "01/11"
Columns("BM:CQ").Hidden = False
Columns("D:BL").Hidden = True
Columns("CR:FD").Hidden = True

Case "02/11"
Columns("CR:DV").Hidden = False
Columns("D:CQ").Hidden = True
Columns("DW:FD").Hidden = True

Case "03/11"
Columns("DW:EX").Hidden = False
Columns("D:DV").Hidden = True
Columns("EY:FD").Hidden = True
Case "04/11"
Columns("EY:FD").Hidden = False
Columns("D:EX").Hidden = True

Case Else
MsgBox "Nenhuma das Alternativas"

End Select

End Sub

Valeu!

 
Postado : 25/11/2010 7:37 pm