Página 1 de 1

Ajuda com macro para ocultar linha

Enviado: 24 Jul 2018 às 22:54
por LuisOliveira
Boas,
Tenho uma planilha em que a a coluna "B" contém uma fórmula para ir buscar valores a outras sheets. O que pretendo é uma macro em que caso a célula "b" for igual a zero, a mesma oculte a linha inteira, contudo se o valor passar a ser diferente de zero, a mesma volte a aparecer.
Abaixo a macro que estou a usar, sendo que funciona, com excepção de a célula B não voltar a aparecer caso o valor da mesma altere para diferente de zero.
Podem ajudar?


Sub Oculta()

'
Dim i As Integer
For i = 1 To 30
If Range("D" & i).Value = 0 Then
Rows(i & ":" & i).Select
Selection.EntireRow.Hidden = True
Else
End If
Next i
End Sub

Re: Ajuda com macro para ocultar linha

Enviado: 25 Jul 2018 às 08:53
por osvaldomp
LuisOliveira escreveu: O que pretendo é uma macro em que caso a célula "b" ...
Abaixo a macro que estou a usar, sendo que funciona, ...
O código que você postou analisa a coluna D e não a B ;)

Experimente. Cole o código abaixo no módulo da planilha que você quer ocultar/reexibir as linhas.
Código: Selecionar todos
Private Sub Worksheet_Calculate()
 Dim i As Long
  Application.ScreenUpdating = False
  Rows("1:30").Hidden = False
   For i = 1 To 30
    Rows(i).Hidden = IIf(Cells(i, 2) = 0, True, False)
   Next i
  Application.ScreenUpdating = True
End Sub

Ajuda com macro para ocultar linha

Enviado: 25 Jul 2018 às 20:33
por LuisOliveira
Muito Obrigado!
Se não for abusar, tenho outro problema que não tenho solução...
Existe alguma possibilidade de na mesma macro conseguir que caso os valor das células "B" se repitam, a mesma oculte a linha cujo valor na célula "E" seja menor?

Exemplo:

1111 Batatas 20,00 Carlos
2222 Arroz 15,00 Carlos
3333 Feijão 22,00 João
4444 Alface 30,00 António
5555 Couve 51,00 Lurdes
6666 Cenoura 65,00 Lurdes
7777 Cebola 21,00 André
8888 Alho 22,00 João
9999 Louro 8,00 Carlos
5555 Couve 20,00 André
0 A designar 0,00 0


Neste caso pretendia que apenas ficasse a linha referente á Lurdes, e ocultasse a linha referente ao André.

Re: Ajuda com macro para ocultar linha

Enviado: 25 Jul 2018 às 20:49
por osvaldomp
Com base nos exemplos que você colocou, se 5555 está na coluna B então os valores 51,00 e 20,00 estão na coluna D, e não na E ;)
Esclareça.

Ajuda com macro para ocultar linha

Enviado: 25 Jul 2018 às 21:12
por LuisOliveira
Tem uma linha em branco. É mesmo na célula "É".
Desculpe não estar explicito

Re: Ajuda com macro para ocultar linha

Enviado: 26 Jul 2018 às 17:50
por osvaldomp
LuisOliveira escreveu:Tem uma linha em branco.
Talvez seja uma coluna ;)
Experimente o código abaixo no lugar do anterior.
Código: Selecionar todos
Private Sub Worksheet_Calculate()
 Dim i As Long, c As Long
  Application.ScreenUpdating = False
  Rows("1:30").Hidden = False
   For i = 1 To 30
    If Cells(i, 2) = 0 Then
     Rows(i).Hidden = True
    ElseIf Application.CountIf([B1:B30], Cells(i, 2)) > 1 Then
     c = [B:B].Find(Cells(i, 2), lookat:=xlWhole, after:=Cells(i, 2)).Row
     Rows(i).Hidden = Cells(i, 5) < Cells(c, 5)
     Rows(c).Hidden = Cells(c, 5) < Cells(i, 5)
    End If
   Next i
  Application.ScreenUpdating = True
End Sub

Ajuda com macro para ocultar linha

Enviado: 26 Jul 2018 às 21:33
por LuisOliveira
Efetuei algumas alterações referentes ao numero de células a verificar, ou seja, de 30 para 200.
Em vez de procurar valores na coluna "E" coloquei para a coluna "F", devido a restruturação da planilha, mas agora dá erro...
Consegue identificar o erro?

Sub Macro1()
Dim i As Long, c As Long
Application.ScreenUpdating = False
Rows("1:200").Hidden = False
For i = 1 To 200
If Cells(i, 2) = 0 Then
Rows(i).Hidden = True
ElseIf Application.CountIf([B1:B200], Cells(i, 2)) > 1 Then
c = [B:B].Find(Cells(i, 2), lookat:=xlWhole, after:=Cells(i, 2)).Row
Rows(i).Hidden = Cells(i, 6) < Cells(c, 6)
Rows(c).Hidden = Cells(c, 6) < Cells(i, 6)
End If
Next i
Application.ScreenUpdating = True

ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
ThisWorkbook.Path & "\" & Range("E2") & " " & Range("H2") & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False

Rows("1:200").Select
Range("A200").Activate
Selection.EntireRow.Hidden = False
ActiveWindow.SmallScroll Down:=-186
Range("O6").Select

End Sub

Re: Ajuda com macro para ocultar linha

Enviado: 26 Jul 2018 às 22:48
por osvaldomp
LuisOliveira escreveu:Efetuei algumas alterações referentes ao numero de células a verificar, ou seja, de 30 para 200.
Em vez de procurar valores na coluna "E" coloquei para a coluna "F", devido a restruturação da planilha, mas agora dá erro...
Consegue identificar o erro?
Inicialmente você apresentou uma situação. Eu preparei um código.
Em seguida você apresentou um segunda situação. Eu preparei um novo código.
Agora você alterou o segundo código para atender a uma terceira situação e ainda acrescentou instruções para atender a uma quarta situação.
E agora você quer que eu identifique o erro :?: :o :shock:

Ajuda com macro para ocultar linha

Enviado: 26 Jul 2018 às 23:17
por LuisOliveira
Agradeço a atenção dispensada por si, e peço desculpa pelo transtorno causado devido a não ter conseguido apresentar tudo de uma só vez...
Alterei o código de acordo com o que necessito, e está a dar erro 91. Já tentei e não consegui resolver, daí ter pedido ajuda...
Caso possa ajudar, agradeço! Caso pense que já chegou a ajuda que me deu, agradeço na mesma o que fez.
Infelizmente tenho pena de não ter a experiência ou conhecimento de muitos dos users deste fórum.

Mais uma vez, obrigado por tudo!