Vídeo recomendado
https://youtu.be/diWPPPhW-9E

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

Fórum para dúvidas sobre os fundamentos da linguagem de programação Visual Basic no contexto do VBA
Alana
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Sex Fev 24, 2017 12:48 pm

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

Mensagem 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!


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

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

Mensagem 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


Alana
Acabou de chegar
Acabou de chegar
Mensagens: 2
Registrado em: Sex Fev 24, 2017 12:48 pm

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

Mensagem 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.


srobles
Jedi
Jedi
Mensagens: 805
Registrado em: Qua Mai 06, 2015 7:39 pm

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

Mensagem 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


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Celmo
Acabou de chegar
Acabou de chegar
Mensagens: 1
Registrado em: Ter Jan 14, 2020 9:32 am

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

Mensagem 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.


Disable adblock

This site is supported by ads and donations.
If you see this text you are blocking our ads.
Please consider a Donation to support the site.


Responder