Notifications
Clear all

alterar macro para ocultar de acordo com o conteúdo

6 Posts
3 Usuários
0 Reactions
1,392 Visualizações
(@juliowd)
Posts: 149
Estimable Member
Topic starter
 

Oi. Tudo bem?

Eu tenho uma super macro feita pelo fernando.fernandes há tempos.
E eu gostaria que ela, ao invés de DELETAR as linhas que contiverem uma determinada informação, ela OCULTASSE.

Será que alguém consegue me dar um help com isso?

Segue a macro:

Sub excluir_linhas_com_criterio()
Application.ScreenUpdating = False

'macro para deletar as linhas que contiverem "aguardando nome"

Dim rngParaDeletar As Excel.Range
    Set rngParaDeletar = ActiveSheet.Rows(1001)

    For linha = 1000 To 6 Step -1
        If ActiveSheet.Range("b" & linha) = "aguardando nome" Then
            Set rngParaDeletar = Application.Union(rngParaDeletar, ActiveSheet.Rows(linha))
        End If
    Next linha
    If Not rngParaDeletar Is Nothing Then
        rngParaDeletar.Delete shift:=xlUp
        End If
Plan11.Protect
'tirar as turmas que não serão usadas no draft
Plan5.Unprotect
Plan5.Select
'macro para deletar as linhas que contiverem "aguardando nome"
Dim rngParaDeletarNoDraft As Excel.Range
    Set rngParaDeletarNoDraft = ActiveSheet.Rows(1001)
    For linha = 1000 To 6 Step -1
        If ActiveSheet.Range("b" & linha) = "aguardando nome" Then
            Set rngParaDeletarNoDraft = Application.Union(rngParaDeletarNoDraft, ActiveSheet.Rows(linha))
        End If
    Next linha
    If Not rngParaDeletarNoDraft Is Nothing Then
        rngParaDeletarNoDraft.Delete shift:=xlUp
        End If

Plan5.Protect
Plan13.Select

Application.ScreenUpdating = True
End Sub

Obrigado!!!!!!!!

 
Postado : 15/01/2015 11:18 am
Fernando Fernandes
(@fernandofernandes)
Posts: 43750
Illustrious Member
 

Super macro feita pelo fernando.fernandes? rsrsrsrs

Vamos lá, ao invés de usar essa linha:

rngParaDeletar.Delete shift:=xlUp

Use

rngParaDeletar.Hidden = true 

Se quiser mudar o nome do Range para: rngParaOcultar, fica melhor pra entender depois!

;-)

Existem mil maneiras de preparar Neston. Invente a sua!
http://www.youtube.com/ExpressoExcel

 
Postado : 15/01/2015 11:27 am
(@juliowd)
Posts: 149
Estimable Member
Topic starter
 

E aí, cara? Então. Essa tua macro me foi salvadora há uns tempos.

Então. Eu fiz ali o que tu disse. Mas não rolou.
Deu o seguinte erro:

"não é possível definir a propriedade Hidden da classe Range."

Eu lembro que essa macro ela juntava todas as linhas lá embaixo, e depois deletava. Pois isso deixava mto mais rápido.
Mas não sei realmente se é isso mesmo.
O que eu preciso é, na verdade, que se qualquer uma das linhas, na célula B, contiver a palavra "categoria", ela fosse ocultada. É que em alguns casos, existe células escrito 'sub-categoria'. E eu gostaria que ocultasse também.

O que dá pra fazer nesse caso?

Eu já tenho outra macro que funciona, mas mtooo lerdamente.

Valeu!!!!!

 
Postado : 15/01/2015 11:46 am
(@gtsalikis)
Posts: 2373
Noble Member
 

Eu não lembro da tua planilha, mas, se é só pra ocultar, não dá pra usar um filtro?

Lembre-se de AGRADECER aos que te ajudaram, e de marcar o tópico como [Resolvido]
Gente que cuida de gente.

Gilmar

 
Postado : 15/01/2015 12:42 pm
(@juliowd)
Posts: 149
Estimable Member
Topic starter
 

Então.. até daria. Mas eu não quero que fique aquele íconezinho do filtro.

Ele tira o aspecto de sistema que eu quero dar pra ela.

Bom. Anexei uma imagem contendo a configuração que eu to precisando.

Será que tem como fazer uma macro pra fazer isso acontecer?

 
Postado : 15/01/2015 12:51 pm
(@juliowd)
Posts: 149
Estimable Member
Topic starter
 

Oi. Eu encontrei estes códigos para fazer o que eu preciso. Porém ambos o processo é meio lento.
Existe a possibilidade de algum mais ágil?

Sub ocultar_linhas_do_relatorio_do_plano_de_contas()
Dim i As Long

For i = 1 To ActiveSheet.UsedRange.Rows.Count
If Cells(i, "B").Value = "sub-categoria indefinida" Then
Rows(i).EntireRow.Hidden = True
End If
Next
End Sub

ou este aqui, feito pelo AlexandreVba

Sub alexandrevba()
    Application.ScreenUpdating = False
     
    With ActiveSheet
        For Each cell In Range("B9:B1000")
            If cell.Value = "sub-categoria indefinida" Then
                cell.EntireRow.Hidden = True
            End If
        Next
    End With
     
    Application.ScreenUpdating = True
End Sub

Agradeço aos amigos de antemão.

 
Postado : 16/01/2015 4:27 am