Notifications
Clear all

Ocultar linhas de acordo com valor da célula

20 Posts
2 Usuários
0 Reactions
3,282 Visualizações
(@mdenk)
Posts: 32
Eminent Member
Topic starter
 

Bom dia.
Pessoal eu preciso de um código que oculte as linhas de acordo com a coluna (AB), se alguma célula da coluna AB for igual a "ocultar" então ocultar linha, caso contrário deixar exibida.

Desde já agradeço.

 
Postado : 11/02/2013 6:57 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Use a pesquisa do fórum

Sub OcultarAleVBA()
Dim r As Long
With Sheets("Sheet1")
For r = 2 To 2000
    If Cells(2, 28).Value = "ocultar" Then
     .Rows(r).EntireRow.Hidden = True
    End If
Next r
End With
End Sub
 
Postado : 11/02/2013 7:18 am
(@mdenk)
Posts: 32
Eminent Member
Topic starter
 

Desculpa tomar o seu tempo com este assunto, mas eu gostaria que esse código executasse sozinho, pois vou colocar uma função (Se) na coluna AB e pra mim facilitaria muito isso.
E outra dúvida na função acima onde é referenciada a coluna? e o que significa R = 2 to 2000.
Desde já agradeço.

 
Postado : 11/02/2013 7:29 am
(@mdenk)
Posts: 32
Eminent Member
Topic starter
 

Desculpa tomar o seu tempo com este assunto, mas eu gostaria que esse código executasse sozinho, pois vou colocar uma função (Se) na coluna AB e pra mim facilitaria muito isso.
E outra dúvida na função acima onde é referenciada a coluna? e o que significa R = 2 to 2000.
Desde já agradeço.

 
Postado : 11/02/2013 8:21 am
(@mdenk)
Posts: 32
Eminent Member
Topic starter
 

Sub OcultarLinhas()
Dim i As Long

For i = 1 To ActiveSheet.UsedRange.Rows.Count
If Cells(i, "D").Value = "ocultar" Then
Rows(i).EntireRow.Hidden = True
End If
Next
End Sub

Usei esse código e funcionou muito bem, mas eu preciso que se o valor da célula não for mais "ocultar" a célula seja reexibida automáticamente. Gostaria que ela ocultasse e reexibisse automáticamente sem que houvesse a necessidade de inserir um botão ou algo assim para execução.

 
Postado : 11/02/2013 8:51 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Bom dia!!

Não sei se eu entendi.

Private Sub Worksheet_Change(ByVal Target As Range)
    Application.ScreenUpdating = False
     
    With ActiveSheet
        For Each cell In Range("AB2:AB150")
            If cell.Value = "ocultar" Then
                cell.EntireRow.Hidden = True
            End If
        Next
    End With
     
    Application.ScreenUpdating = True
End Sub
 
Postado : 11/02/2013 9:53 am
(@mdenk)
Posts: 32
Eminent Member
Topic starter
 

Funcionou perfeitamente, mas agora eu preciso que caso eu altere o valor da célula "ocultar" a linha seja reexibida.

Eu tenho uma função ( Se) na coluna AB então caso a função (Se) retorne "ocultar" ele oculta a linha, isso a função acima citada resolve muito bem, mas caso a função (Se) retorne diferente de ocultar ele reexiba a linha anteriormente ocultada.
Fui claro?

 
Postado : 11/02/2013 10:02 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Eu não estou entendendo.

Onde está essa formula?

Mande um arquivo modelo compactado!!

Att

 
Postado : 11/02/2013 10:21 am
(@mdenk)
Posts: 32
Eminent Member
Topic starter
 

As vezes a cluna AB vai retorna "Ocultar" as vezes "Reexibir" então certas vezes ela precisa estar oculta outras não.

Eu disse COMOPACTADO!!!

Aquarde....

 
Postado : 11/02/2013 10:32 am
(@mdenk)
Posts: 32
Eminent Member
Topic starter
 

Segue.

 
Postado : 11/02/2013 10:43 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa tarde!!

Imagine o seguinte, você oculta a linha 10, como exibir essa linha com a formula, pois para isso tem que ir até A10, e colocar um valor para que a mesma fique com o texto "Reexibir"

Faça uma simulação de meu exemplo citado acima.

Att

 
Postado : 11/02/2013 10:44 am
(@mdenk)
Posts: 32
Eminent Member
Topic starter
 

Exemplo;

Célula AB1 retornou Ocultar, então o seu código vai ocultar célula AB1, agora alterei a minha validação de dados e a célula AB1 retornou "Reexibir", no seu código a célula AB1 continua oculta, porém eu preciso que ela seja reexibida.

 
Postado : 11/02/2013 10:48 am
(@mdenk)
Posts: 32
Eminent Member
Topic starter
 

segue compactado.

 
Postado : 11/02/2013 10:56 am
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Boa noite!!

Acho que é mellhor aquardar o pessoal replicar, pois eu não estou precebendo uma maneira de fazer isso.

Private Sub Worksheet_Calculate()

    Application.ScreenUpdating = False
Dim cell As Range
    Dim myLastRow As Long
    myLastRow = Cells(Rows.Count, "A").End(xlUp).Row
    For Each cell In Range("AB3:AB200" & myLastRow)
        If (cell.Formulas = "ocultar") Then
            cell.EntireRow.Hidden = True
        End If
        If (cell.Formulas = "reexibir") Then
            cell.EntireRow.Hidden = False
        End If
    Next
    Application.ScreenUpdating = True
End Sub

Para mim, não faz sentido
Att

 
Postado : 11/02/2013 2:06 pm
(@mdenk)
Posts: 32
Eminent Member
Topic starter
 

Bom dia Alexandre.

Private Sub Worksheet_Calculate()
For Each cell In Range("AB1:AB70")
If cell.Value ="Ocultar" Then cell.EntireRow.Hidden = True

Else: cell.EntireRow.Hidden = False

Next

End Sub

tentei esse código, mas ele gera um erro de "Else sem if".

A respeito da minha plan, o que estou querendo fazer é gerar um relatório onde ele obedece a critérios de validação de dados, então algumas vezes a fórmula não traz resultado nenhum, nesse caso gostaria de ocultar a linha, mas as vezes dependendo do critério da validação ele retorna valor.
Exemplo: selecionei 2012 na validação, então algumas linhas serão preenchidas e outras não, pois não tenho dados referentes a ela em 2012 essas que não trouxeram dados eu as quero ocultas, mas se eu selecionei o 2013 na validação por exemplo outras serão preenchidas, pois tem dados em 2013.

fui claro?

O que eu quero é que se AB for = "Ocultar" então oculte, mas se for outro valor ele fique aparecendo.
O seu código oculta, mas se depois a validação mudar e ele retornar resultado ele continua oculto e eu precisava que reexibisse.

 
Postado : 12/02/2013 6:28 am
Página 1 / 2