Página 1 de 1

Ocultar colunas com base em critérios de células

Enviado: Qua Mar 01, 2017 2:07 pm
por Alana
Boa tarde!

Preciso de um código que me ajude a ocultar certas colunas conforme o critério de determinadas células, vou colocar 'botões' que farão, por exemplo:
BOTÃO "ADM" => ocultar as colunas "E até AV" se as células "E10, F10 até AV10" for diferente de "ADM" isto, respectivamente, ou seja, ocultará a coluna "E" se a célula "E10" for diferente de "ADM", ocultará a coluna "F" se a célula "F10" for diferente de "ADM" e assim por diante.
BOTÃO "EXP" => ocultar as colunas "E até AV" se as células "E10, F10 até AV10" for diferente de "EXP" isto, respectivamente, ou seja, ocultará a coluna "E" se a célula "E10" for diferente de "EXP", ocultará a coluna "F" se a célula "F10" for diferente de "EXP" e assim por diante.

Achei um que funciona (abaixo), mas deixa o processo muito demorado, pois fica analisando coluna por coluna...queria saber se existe algo que faça de forma mais rápida a leitura?

EXEMPLO que funciona (mas lento):
Sub Botão_ADM()
'
' Botão_ADM Macro
'
If Range("E10").Value <> "ADM" Then
Columns("E:E").Hidden = True
End If
If Range("F10").Value <> "ADM" Then
Columns("F:F").Hidden = True
End If
If Range("G10").Value <> "ADM" Then
Columns("G:G").Hidden = True
End If
If Range("H10").Value <> "ADM" Then
Columns("H:H").Hidden = True
End If
If Range("I10").Value <> "ADM" Then
Columns("I:I").Hidden = True
End If
If Range("J10").Value <> "ADM" Then
Columns("J:J").Hidden = True
End If
If Range("K10").Value <> "ADM" Then
Columns("K:K").Hidden = True
End If
If Range("L10").Value <> "ADM" Then
Columns("L:L").Hidden = True
End If
If Range("M10").Value <> "ADM" Then
Columns("M:M").Hidden = True
End If
If Range("N10").Value <> "ADM" Then
Columns("N:N").Hidden = True
End If
If Range("O10").Value <> "ADM" Then
Columns("O:O").Hidden = True
End If
If Range("P10").Value <> "ADM" Then
Columns("P:P").Hidden = True
End If
If Range("Q10").Value <> "ADM" Then
Columns("Q:Q").Hidden = True
End If
If Range("R10").Value <> "ADM" Then
Columns("R:R").Hidden = True
End If
If Range("S10").Value <> "ADM" Then
Columns("S:S").Hidden = True
End If
If Range("T10").Value <> "ADM" Then
Columns("T:T").Hidden = True
End If
If Range("U10").Value <> "ADM" Then
Columns("U:U").Hidden = True
End If
If Range("V10").Value <> "ADM" Then
Columns("V:V").Hidden = True
End If
If Range("W10").Value <> "ADM" Then
Columns("W:W").Hidden = True
End If
If Range("X10").Value <> "ADM" Then
Columns("X:X").Hidden = True
End If
If Range("Y10").Value <> "ADM" Then
Columns("Y:Y").Hidden = True
End If
If Range("Z10").Value <> "ADM" Then
Columns("Z:Z").Hidden = True

Agradeço muito se alguém me ajudar!

Re: Ocultar colunas com base em critérios de células

Enviado: Qua Mar 01, 2017 3:04 pm
por srobles
Alana,

Adicione um módulo, cole o código abaixo, adicione um botão na planilha e chame a rotina.

Código: Selecionar todos

Sub ocultaColunas()
    For coluna = 5 To 48 'E até AV
        'Se o valor da linha 10 na coluna for igual a ADM
        If Cells(10, coluna) <> "ADM" Then
            'Ocultamos a coluna
            Columns(coluna).Hidden = True
        Else
            'Senão, a exibimos
            Columns(coluna).Hidden = False
        End If
    Next
End Sub
Abs

Re: Ocultar colunas com base em critérios de células

Enviado: Qua Mar 01, 2017 3:50 pm
por Alana
Obrigada pela ajuda!

Este código funcionou da mesma forma que o outro, só que deixando mais 'clean' o código, já ajuda bastante para montar os demais, mas acho que o problema da lentidão vai ter de ficar assim mesmo, pois são várias colunas, e tem de ler célula a célula, acho que essa parte realmente vou ter que encarar e esperar fazer a leitura após o click/execução.

Re: Ocultar colunas com base em critérios de células

Enviado: Qua Mar 01, 2017 4:08 pm
por srobles
Alana,

Aqui em meus testes, o código foi executado e concluído em +/- 1 segundo.
Temos de levar em consideração a configuração do computador, o tamanho da planilha em questão...enfim, temos "n" variáveis á considerar para definirmos o que causa essa lentidão na execução destes simples códigos.

Quaisquer dúvidas, estamos á disposição.

Abs

Re: Ocultar colunas com base em critérios de células

Enviado: Qua Jan 15, 2020 7:26 am
por Celmo
Preciso conseguir um código VBA para uma macro
com a finalidade de ocultar/reexibir colunas com valores igual a zero numa
faixa de células de uma linha.

Na verdade eu preciso ocultar as colunas H a EU com valores iguais a zero
nas células H a EU da linha 4.
Se alguém tiver um código VBA similar, favor me avisar.

Contando com a colaboração, agradeco antecipadamente.