Notifications
Clear all

Ocultar/Desocultar linha condicionalmente

7 Posts
3 Usuários
0 Reactions
1,648 Visualizações
(@victtaum)
Posts: 0
New Member
Topic starter
 

Boa noite Pessoal.

Quero saber se é possível ocultar ou desocultar uma linha (ou mais) se o valor de determinada célula for verdadeiro.

Por exemplo, se o valor da célula A1 for igual a "Ensino Médio" então eu desoculto uma linha (ou mais) com uma matéria (ou mais) que pertence especificamente ao ensino médio.

É possível?

 
Postado : 30/03/2015 5:33 pm
(@edcronos)
Posts: 1006
Noble Member
 

sim, por macro é possivel sim
mas tem que ter mais detalhes da planilha,
como vai ser feita a escolha ?

seria algo como isso

Sub ColunasAS(ByVal ValorCol As Variant, ByVal Aparece1_Some2 As Long, _
        ByVal LinhaReferencia As Long, Optional Dift As Byte)
    Dim Ite As Variant, Ite2 As Variant, LC As Long, k As Long

    If ValorCol > 0 And ValorCol < 100 Then Ite = ValorCol * 1 Else Ite = LCase(ValorCol)    'valor para mostrar"

    difv = Diferentesd    'Dift
    LC = 220                'quantidades de colunas para verificar
    Lina = LinhaReferencia

    If Aparece1_Some2 = 2 Then Trui = "False": Tru = "True" Else Tru = "False": Trui = "True"
    For k = 20 To LC  'conta de (col) até ultima coluna prenchida
        If Cells(Lina, k).Value2 = Ite Or Cells((Lina + 1), k).Value2 = Ite Then Columns(k).EntireColumn.Hidden = Tru
        If difv = True And Cells(Lina, k) <> Ite Then Columns(k).EntireColumn.Hidden = Trui
    Next k
End Sub
 
Postado : 30/03/2015 6:28 pm
(@victtaum)
Posts: 0
New Member
Topic starter
 

Fala Edcronos,

A planilha você já conhece, é essa em anexo.

O que eu quero fazer é o seguinte, o Ensino Médio tem matérias diferentes do Fundamental. O primeiro ano do médio tem algumas diferentes em relação ao segundo e terceiro do médio. Sendo assim, se I7 foi igual a MED1/15 então exibi a linha X e Y, se for MED2/15 então exibe as linhas X e W, se for MED3/15 exibe W, X, Y e Z.

Entende?

 
Postado : 31/03/2015 8:54 am
(@edcronos)
Posts: 1006
Noble Member
 

vamos lá
primeiro, vc sabe oq fazer e tem tudo em sua mente
sua planilha tem um monte de pastas e abas,
nós tentamos ajudar,
mas temos nossos próprios projetos para dar andamento e quebrar a cabeça
e fica dificil tentar adivinhar ou ficar procurando na planilha uma logica para oq a pessoa explicou "ainda mais uma com tantas pastas e abas"

X e Y são incógnitas na matemática, (não sou bom em álgebra)

para ter ajuda, monte um exemplo REDUZIDO uma aba apenas de onde vai ser aplicado
e um exemplo de como quer que fique
"APENA COM A ABA QUE VAI SE APLICADA"(se tiver outras depois vc adapta)

desculpe falar assim, a maioria prefere ignorar questões complicadas "essa é apenas pela explicação e tamanho do arquivo"

 
Postado : 01/04/2015 6:19 am
(@victtaum)
Posts: 0
New Member
Topic starter
 

Edcronos,

Para simplificar:

1- Gostaria que a linha 5 e a linha 6 sempre fossem ocultadas quando houvesse alguma atualização na planilha (assim como acontece com a formula agora(), ela sempre atualiza a data quando fazemos alterações na planilha)
2- Se o valor da célula A1 for igual a "Dedo" então a linha 5 e a linha 6 serão exibidas

É isso, creio que assim seja até mais simples para entender. É possível?

 
Postado : 08/04/2015 8:38 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Victtaum

Acho que o vídeo abaixo ensina fazer o que vc deseja:

https://www.youtube.com/watch?v=DSICRkb5KiI

Se a dica foi útil, clique na mãozinha.

[]s

 
Postado : 08/04/2015 11:07 am
(@victtaum)
Posts: 0
New Member
Topic starter
 

Victtaum

Acho que o vídeo abaixo ensina fazer o que vc deseja:

https://www.youtube.com/watch?v=DSICRkb5KiI

Se a dica foi útil, clique na mãozinha.

[]s

Realmente isso me ajudou muito, consegui fazer ocultar da forma como eu queria, muito obrigado. Faltava apenas executar isso automaticamente, mas consegui resolver tudo isso com a macro abaixo:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

Set KeyCells = Range("A1:C10")

If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then

lin = 11
Do Until Cells(lin, 1) = ""

If Cells(lin, 11) = "X" Then
Cells(lin, 1).EntireRow.Hidden = False
Else
Cells(lin, 1).EntireRow.Hidden = True
End If
lin = lin + 1

Loop

End If
End Sub

Meu muito obrigado à todos, e parabéns pela disposição em compartilhar conhecimento.

 
Postado : 09/04/2015 6:31 am