Usuário com melhor resposta
Código para ocultar linhas

Pergunta
-
Amigos, procuro um código que oculte as linhas 51 e 52, caso A51:A52 forem células vazias.
Tks
Jerson
quinta-feira, 24 de julho de 2008 19:37
Respostas
-
Olá, Jerson.
Sinceramente não sei dizer o que está havendo por que não faz sentido.
Rodei a macro em cima do arquivo que vc me enviou e rodou perfeitamente, em ambos os intervalos.
Como último teste, peço que modifique as fórmulas que contém o PROCV de forma que retornem "-" caso não seja encontrado nenhum valor e para o intervalo [A51:52] use "-" como condição de teste de valor da célula,
Desta forma o codigo fica:
Code SnippetPrivate Sub Worksheet_Change(ByVal Target As Range)
Dim Intervalo As Range
Dim Célula As Range'Ocultar linhas de 32 a 38 se as células contiverem um string vazio
Set Intervalo = [A32:A38]For Each Célula In Intervalo
If Célula = "" Then
Célula.EntireRow.Hidden = True
Else
Célula.EntireRow.Hidden = False
End IfNext Célula
'Ocultar linhas 51 e 52 se as células contiverem um string vazio
Set Intervalo = [A51:A52]For Each Célula In Intervalo
If Célula = "-" Then
Célula.EntireRow.Hidden = True
Else
Célula.EntireRow.Hidden = False
End IfNext Célula
End Sub
[ ]s
quinta-feira, 31 de julho de 2008 10:48
Todas as Respostas
-
Jerson,
Tente este aqui:
Code SnippetSub OcultarLinhas()
Dim Intervalo As Range
Dim Célula As RangeSet Intervalo = [A51:A52]
For Each Célula In Intervalo
If Célula = "" Then Célula.EntireRow.Hidden = True
Next Célula
End Sub
Se quiser outros intervalos diferentes de A51:A52, é só alterar a linha Set Intervalo = [A51:A52]
[ ]s
sexta-feira, 25 de julho de 2008 11:03 -
Bom dia Adilson,
Me desculpe, mas eu omiti uma informação que parece ser importante neste caso. As células A51 e A52 têm uma fórmula que retorna "" em alguns casos. O teu código só funciona quando a célula está "limpa". Podes fazer este ajuste, por favor?
Tks
Jerson
sexta-feira, 25 de julho de 2008 11:57 -
Teste este código aqui:
Code SnippetSub OcultarLinhas()
Dim Intervalo As Range
Dim Célula As RangeSet Intervalo = [A5:A6]
For Each Célula In Intervalo
If Len(Célula) < 1 Then Célula.EntireRow.Hidden = True
Next Célula
End Sub
[ ]s
sexta-feira, 25 de julho de 2008 14:34 -
Not yet... continua funcionando só quando a célula está "limpa". Outra coisa, eu preciso que ela seja do tipo captura de evento.
Tks
Jerson
sexta-feira, 25 de julho de 2008 18:14 -
Jerson,
Só me mandando o arquivo para entender melhor as suas fórmulas, pois passou em todos os teste que fiz.
A qual evento vc quer associar? SelectionChange, Chage ou outro?
[ ]s
sábado, 26 de julho de 2008 01:46 -
Jerson,
Testei o arquivo que vc me enviou e o código abaixo funcionou perfeitamente.
Se vc já tiver um outro evento rodando,é só inserir as instruções deste código logo na sequência das anteriores.
Code SnippetPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Intervalo As Range
Dim Célula As Range'Ocultar linhas de 32 a 38 se as células contiverem um string vazio
Set Intervalo = [A32:A38]For Each Célula In Intervalo
If Célula = "" Then Célula.EntireRow.Hidden = True
Next Célula
'Ocultar linhas 51 e 52 se as células contiverem um string vazio
Set Intervalo = [A51:A52]For Each Célula In Intervalo
If Célula = "" Then Célula.EntireRow.Hidden = True
Next Célula
End Sub[ ]s
terça-feira, 29 de julho de 2008 10:22 -
Adilson, está ocultando agora, só que não volta a exibir novamente as linhas quando há dados. É possível?
Sds
Jerson
terça-feira, 29 de julho de 2008 11:50 -
Veja desta forma:
Code SnippetPrivate Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim Intervalo As Range
Dim Célula As Range'Ocultar linhas de 32 a 38 se as células contiverem um string vazio
Set Intervalo = [A32:A38]For Each Célula In Intervalo
If Célula = "" Then
Célula.EntireRow.Hidden = True
Else
Célula.EntireRow.Hidden = False
End IfNext Célula
'Ocultar linhas 51 e 52 se as células contiverem um string vazio
Set Intervalo = [A51:A52]For Each Célula In Intervalo
If Célula = "" Then
Célula.EntireRow.Hidden = True
Else
Célula.EntireRow.Hidden = False
End IfNext Célula
End Sub
[ ]sterça-feira, 29 de julho de 2008 12:17 -
Adilson, tá funcionando blz pro intervalo A32:A38, mas pro intervalo A51:A52 ela só re-exibe (se oculto manualmente), não oculta.
Sds
Jerson
terça-feira, 29 de julho de 2008 13:46 -
Modifiquei o evento de SelectionChange para Change.
Veja se agora está de acordo:
Code SnippetPrivate Sub Worksheet_Change(ByVal Target As Range)
Dim Intervalo As Range
Dim Célula As Range'Ocultar linhas de 32 a 38 se as células contiverem um string vazio
Set Intervalo = [A32:A38]For Each Célula In Intervalo
If Célula = "" Then
Célula.EntireRow.Hidden = True
Else
Célula.EntireRow.Hidden = False
End IfNext Célula
'Ocultar linhas 51 e 52 se as células contiverem um string vazio
Set Intervalo = [A51:A52]For Each Célula In Intervalo
If Célula = "" Then
Célula.EntireRow.Hidden = True
Else
Célula.EntireRow.Hidden = False
End IfNext Célula
End Sub
[ ]s
terça-feira, 29 de julho de 2008 16:46 -
Adilson, ainda não foi dessa vez... percebi que o intervalo A32:A38 funciona porque a fórmula neste intervalo é uma PROCV e quando retorna "" é porque a célula na origem está mesmo vazia.
Não é o caso do intervalo A51:A52, que utiliza SE e retorna "" quando o resultado é FALSO. Assim mesmo retornando "" a célula na origem contém dados. Fiz um teste deletando a fórmula de A51:A52 e macro funcionou. Seria este o problema?
Sds
Jerson
quarta-feira, 30 de julho de 2008 13:31 -
Olá, Jerson.
Sinceramente não sei dizer o que está havendo por que não faz sentido.
Rodei a macro em cima do arquivo que vc me enviou e rodou perfeitamente, em ambos os intervalos.
Como último teste, peço que modifique as fórmulas que contém o PROCV de forma que retornem "-" caso não seja encontrado nenhum valor e para o intervalo [A51:52] use "-" como condição de teste de valor da célula,
Desta forma o codigo fica:
Code SnippetPrivate Sub Worksheet_Change(ByVal Target As Range)
Dim Intervalo As Range
Dim Célula As Range'Ocultar linhas de 32 a 38 se as células contiverem um string vazio
Set Intervalo = [A32:A38]For Each Célula In Intervalo
If Célula = "" Then
Célula.EntireRow.Hidden = True
Else
Célula.EntireRow.Hidden = False
End IfNext Célula
'Ocultar linhas 51 e 52 se as células contiverem um string vazio
Set Intervalo = [A51:A52]For Each Célula In Intervalo
If Célula = "-" Then
Célula.EntireRow.Hidden = True
Else
Célula.EntireRow.Hidden = False
End IfNext Célula
End Sub
[ ]s
quinta-feira, 31 de julho de 2008 10:48 -
Olá Adilson,
De repente me deu um clic... "e se eu trocasse o "-" por 0?" Não é que funcionou?
Mais uma vez muito obrigado pela paciência e persistencia em em ajudar.
Sds
Jerson
quinta-feira, 31 de julho de 2008 11:58