Ir ao conteúdo

Ocultar linha automaticamente Excel2010


ffilgueira1000

Posts recomendados

Postado

Olá, sou novato aqui no Clube do Hardware e preciso da ajuda de vocês para uma planilha que utilizo, trata-se de uma planilha com muitas linhas, aproximadamente 2000... e preciso do seguinte: por exemplo, quando o valor das células da coluna 'D' for igual a 'NF' essa linha inteira deve ser ocultada automaticamente se eu clicar em um botão 'Ocultar linhas com NF', e o texto do botão muda automaticamente para 'Reexibir linhas com NF', caso eu deseje reexibir as linhas que foram ocultas.

Não manjo nada de macro, gostaria de um passo a passo de como inserir essas macros e o botão de ocultar/reexibir na planilha, e também de como limitar essa 'varredura' na coluna 'D'... por exemplo da 'D15' até 'D2015'.

valeu

Postado
Boa noite ffilgueira1000

Seja bem vindo ao fórum!

Veja se é isto que você precisa:

http://www.4shared.com/file/bmGyJJTU/No_mesmo_botoOcultarReexibir.html

Dê retorno.

Um abraço.

Obrigado pela rápida resposta Patropi, a planilha que você enviou é exatamente o que preciso.

Mas preciso de uma ajuda sua de como aplicar essas macros e botões na minha planilha, pois como eu disse, não sei nada de macro...

Se você puder fazer a gentileza de me dar uma passo a passo ficaria muito grato.

valeu.

Postado

:bandeira::-BEER:jump:

É com muito satisfação que verifiquei que esse arquivo foi adaptado de uma criação original minha. Em propriedades está lá "Nascimento" que era um antigo micro aqui de casa.

  • Membro VIP
Postado

Boa noite joseA

Então que os crédito sejam todos seus. Um ótimo código.

Eu encontrei este código na net, mas já o tenho em meus arquivos há algum tempo.

Como sou iniciante em Macros sempre baixo os códigos que você, o JValq, o Mauro, oColoniz@dor e muitos outros feras em VBA postam por aí.

Além de aprender com eles, ainda ajudo quem precisa fazendo pequenas adaptações.

Como você é o autor nada melhor do que você mesmo dar o passo a passo para o colega ffilgueira.

Um abraço.

Postado

Caros colegas joseA e Patropi, agradeço a ambos primeiro por criarem o código e em segundo por adaptarem à minha necessidade, realmente a solução será de muito bom uso para mim.

Fico no aguardo de uma explicação mais detalhada de como inserir esses códigos e botões na minha planilha, e quem sabe um dia eu fique fera no Excel como vocês e não precise mais ficar perturbando ninguém...kkkkk...

Abraços!

Postado

Patropi,

Fera é você nas funções. Quanto à ter um acervo de arquivos também tenho um vasto que nem consigo identificar de quem são na sua maioria. Mas esse é o caminho certo para aprender.

ffilgueira1000,

Não pertuba não cara, afinal é apemas um exercício de aprendizagem.

Segue os procedimentos com comentários

Macro OcultarLinha:


'declaração das variáveis
Dim Linha, LinhaFinal As Integer
' variável que localiza/armazena o nº da última linha com dados da coluna D
LinhaFinal = Range("D65000").End(xlUp).Row
'varre da limha 02 até a última linha com dados (armazenado na variável)
For Linha = 2 To LinhaFinal
'compara em cada uma das linhas preenchidas da coluna D se ocorre o dado "NF"
If Range("D" & Linha).Value = "NF" Then
'caso o dado "NF" seja encontrado oculta a linha
Range("D" & Linha).EntireRow.Hidden = True
Else
End If
'encerra a varredura
Next Linha
End Sub
Sub OcultarLinha()

Macro LinhaReexibir


'declaração das va
Dim Linha, LinhaFinal As Integer
Application.EnableEvents = False
Application.ScreenUpdating = False
'se o Caption do CommandButton1 da Plan1 tiver "Reexibir linhas ocultas"
If Plan1.CommandButton1.Caption = "Reexibir linhas ocultas" Then
'varrer da linha 02 até 500
For Linha = 2 To 500
'e reexibir as linhas ocultas
Range("D" & Linha).EntireRow.Hidden = False
'encerra a varredura
Next Linha
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Sub LinhaReexibir()

Evento CommandButton1_Click


'se o Caption do CommandButton1 da Plan1 tiver "Reexibir linhas ocultas"
If Plan1.CommandButton1.Caption = "Reexibir linhas ocultas" Then
'carrega a macro LinhaReexibir
Call LinhaReexibir
'e carrega o Caption do CommandButton1 da Plan1 com o texto "Ocultar linhas com valor zero"
Plan1.CommandButton1.Caption = "Ocultar linhas com valor zero"
Else
'caso contrário carrega a macro OcultarLinha
Call OcultarLinha
'e carrega o Caption do CommandButton1 da Plan1 com o texto "Reexibir linhas ocultas"
Plan1.CommandButton1.Caption = "Reexibir linhas ocultas"
End If
End Sub
Private Sub CommandButton1_Click()

Qualquer coisa estamos por ai...

Postado

:confused::eek::wacko:

Caros colegas, mais uma vez agradeço o empenho de vocês em me ajudar... mas o que eu gostaria mesmo era de uma passo a passo de como "instalar" essas macros e botões em minha planilha, pois como eu disse sou totalmente ignorante no que tange VBA.

Eu ate pensei em postar minha planilha para vocês fazerem pra mim... se se eu fizer isso nunca vou aprender... o que eu queria era das instruções para mim mesmo quebrar a cabeça e instalar esse troço... kkk...

Apenas para lembrar, como já disse no inicio, a planilha é longa... e preciso que a macro faça a varredura apenas no intervalo de D15 até D2015, pois a partir da linha 2016 nessa mesma coluna, também aparecerá a marca 'NF', mas no entanto não quero afetar em nada essas linhas abaixo.

Me desculpem pelo trabalho!

Postado

1º Passo: Tecle Alt + F11;

2º Passo: No ambiente VBA acesse Inserir>Módulo;

3º Passo: Copie/cole nesse Módulo criado as macros abaixo:


'declaração das variáveis
Dim Linha, LinhaFinal As Integer
' variável que localiza/armazena o nº da última linha com dados da coluna D
LinhaFinal = 2015
'varre da limha 02 até a última linha com dados (armazenado na variável)
For Linha = 15 To LinhaFinal
'compara em cada uma das linhas preenchidas da coluna D se ocorre o dado "NF"
If Range("D" & Linha).Value = "NF" Then
'caso o dado "NF" seja encontrado oculta a linha
Range("D" & Linha).EntireRow.Hidden = True
Else
End If
'encerra a varredura
Next Linha
End Sub

Sub LinhaReexibir()
'declaração das va
Dim Linha, LinhaFinal As Integer
Application.EnableEvents = False
Application.ScreenUpdating = False
'se o Caption do CommandButton1 da Plan1 tiver "Reexibir linhas ocultas"
If Plan1.CommandButton1.Caption = "Reexibir linhas ocultas" Then
'varrer da linha 02 até 500
For Linha = 15 To 2015
'e reexibir as linhas ocultas
Range("D" & Linha).EntireRow.Hidden = False
'encerra a varredura
Next Linha
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Sub OcultarLinha()

4º Passo: Volte p/ planilha;

5º Passo: No menu>Desenvolvedor>Inserir>ControleActivex>Botão de comando;

6º Passo: Dê um duplo clique no botão criado (deve ser CommandButton1 e na Plan1);

7º Passo: Apaque as Linhas:



End Sub
Private Sub CommandButton1_Click()

8º Passo: Copie/cole:


'se o Caption do CommandButton1 da Plan1 tiver "Reexibir linhas ocultas"
If Plan1.CommandButton1.Caption = "Reexibir linhas ocultas" Then
'carrega a macro LinhaReexibir
Call LinhaReexibir
'e carrega o Caption do CommandButton1 da Plan1 com o texto "Ocultar linhas com valor zero"
Plan1.CommandButton1.Caption = "Ocultar linhas com valor zero"
Else
'caso contrário carrega a macro OcultarLinha
Call OcultarLinha
'e carrega o Caption do CommandButton1 da Plan1 com o texto "Reexibir linhas ocultas"
Plan1.CommandButton1.Caption = "Reexibir linhas ocultas"
End If
End Sub
Private Sub CommandButton1_Click()

9º Passo: Volte para planilha e no menu clique em Modo de Design.

Pronto clique no botão para alternar as macros.

Postado
Patropi,

Fera é você nas funções. Quanto à ter um acervo de arquivos também tenho um vasto que nem consigo identificar de quem são na sua maioria. Mas esse é o caminho certo para aprender.

ffilgueira1000,

Não pertuba não cara, afinal é apemas um exercício de aprendizagem.

Segue os procedimentos com comentários

Macro OcultarLinha:


'declaração das variáveis
Dim Linha, LinhaFinal As Integer
' variável que localiza/armazena o nº da última linha com dados da coluna D
LinhaFinal = Range("D65000").End(xlUp).Row
'varre da limha 02 até a última linha com dados (armazenado na variável)
For Linha = 2 To LinhaFinal
'compara em cada uma das linhas preenchidas da coluna D se ocorre o dado "NF"
If Range("D" & Linha).Value = "NF" Then
'caso o dado "NF" seja encontrado oculta a linha
Range("D" & Linha).EntireRow.Hidden = True
Else
End If
'encerra a varredura
Next Linha
End Sub
Sub OcultarLinha()

Macro LinhaReexibir


'declaração das va
Dim Linha, LinhaFinal As Integer
Application.EnableEvents = False
Application.ScreenUpdating = False
'se o Caption do CommandButton1 da Plan1 tiver "Reexibir linhas ocultas"
If Plan1.CommandButton1.Caption = "Reexibir linhas ocultas" Then
'varrer da linha 02 até 500
For Linha = 2 To 500
'e reexibir as linhas ocultas
Range("D" & Linha).EntireRow.Hidden = False
'encerra a varredura
Next Linha
End If
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
Sub LinhaReexibir()

Evento CommandButton1_Click


'se o Caption do CommandButton1 da Plan1 tiver "Reexibir linhas ocultas"
If Plan1.CommandButton1.Caption = "Reexibir linhas ocultas" Then
'carrega a macro LinhaReexibir
Call LinhaReexibir
'e carrega o Caption do CommandButton1 da Plan1 com o texto "Ocultar linhas com valor zero"
Plan1.CommandButton1.Caption = "Ocultar linhas com valor zero"
Else
'caso contrário carrega a macro OcultarLinha
Call OcultarLinha
'e carrega o Caption do CommandButton1 da Plan1 com o texto "Reexibir linhas ocultas"
Plan1.CommandButton1.Caption = "Reexibir linhas ocultas"
End If
End Sub
Private Sub CommandButton1_Click()

Qualquer coisa estamos por ai...

codigo muito bons, eu mesmo ja usei muito!!!!

Postado

:):D

Hei JoseA, só me ajude em uma coisa... eu vou adaptar esse código para outras planilhas que utilizo, e estou com duvida em uma coisa:

Vou substituir a letra 'D' pela letra da coluna que eu desejar, de acordo com a varredura certo?!

Minha pergunta é onde eu limito as linhas que quero varrer com a macro?

Por exemplo da linha 19 até 123... onde eu coloco essas informações do código!

Postado
...Vou substituir a letra 'D' pela letra da coluna que eu desejar, de acordo com a varredura certo?!...

Isso mesmo.

...onde eu limito as linhas que quero varrer com a macro?

Por exemplo da linha 19 até 123... onde eu coloco essas informações do código!

Seriam nessas linhas respectivamente:

For Linha = 19 To 123

e

For Linha = 19 To 123

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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