Ir ao conteúdo
  • Cadastre-se

Excel VBA - ocultar colunas que nao contenham os dados pre definidos no cabeçalho


Posts recomendados

Ola, estou tentando escrever um codigo no qual a partir de um cabeçalho/Titulo oculte demais colunas que nao tenham aquele cabecalho/titulo.

 

No exemplo abaixo eu tenho o cabeçalho/titulo = A; B; C; D eu gostaria de poder localizar os cabeçalhos/titulo A e C e ocultar todos outros.

 

image.png.70a45e92684accaed0f38fd31282f12c.png

 

Desde ja agradeço a ajuda;

Link para o comentário
Compartilhar em outros sites

@CasaDoHardware Entao, preciso que ele busque os Titulos "A" e "C", neste exemplo seria ocultado as colunas "B" e "D"

adicionado 13 minutos depois

@CasaDoHardware Pensei no codigo abaixo: 

 

Sub teste()

Range("A1").Select

If ActiveCell <> "A" Then
    If ActiveCell <> "C" Then
        Selection.EntireColumn.Hidden = True
    End If


End If

Range("B1").Select
If ActiveCell <> "A" Then
    If ActiveCell <> "C" Then
        Selection.EntireColumn.Hidden = True
    End If


End If

Range("C1").Select
If ActiveCell <> "A" Then
    If ActiveCell <> "C" Then
        Selection.EntireColumn.Hidden = True
    End If

End If

Range("D1").Select
If ActiveCell <> "A" Then
    If ActiveCell <> "C" Then
        Selection.EntireColumn.Hidden = True
    End If


End If

Range("E1").Select
If ActiveCell <> "A" Then
    If ActiveCell <> "C" Then
        Selection.EntireColumn.Hidden = True
    End If


End If


End Sub

 

 

ele Funciona mas acho que deve existir algo mais "inteligente" de se fazer.

 

 

Link para o comentário
Compartilhar em outros sites

Sendo assim!!

 

Use este codigo.

 

Considerei o titulo na linha 1.

 

Sub ocultarcoluna()

Dim Coluna As Integer

For Coluna = 1 To Cells(1, Cells.Columns.Count).End(xlToLeft).Column

If Cells(1, Coluna).Value <> "a" _
And Cells(1, Coluna).Value <> "c" Then

Columns(Coluna).EntireColumn.Hidden = True

End If

Next Coluna


End Sub

Link para o comentário
Compartilhar em outros sites

Experimente:

Sub OcultaColunas()
 Dim k As Long, c As Range
  Columns.Hidden = False
  For Each c In Range("A1", Cells(1, Columns.Count).End(1))
   Select Case c.Value
   Case "A", "C"
   Case Else: Columns(c.Column).Hidden = True
   End Select
  Next c
End Sub

1. funciona para qualquer quantidade de colunas com cabeçalho

2. manterá visíveis as colunas com cabeçalho "A" e "B", acrescente quantos cabeçalhos desejar

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...