Página 1 de 1

Ajuste de Código

Enviado: 18 Abr 2019 às 01:01
por Dione
Boa noite galera,

Precisaria alterar esse código para um intervalo especifico (A9:A16), de modo que a célula que anteriormente tinha sido ocultada por constar o valor 0, seja reexibida quando o valor for diferente de 0.
Hoje quando altero o valor de 0 para 10 por exemplo, a célula continua oculta.

=====================================================================================================
Private Sub Worksheet_Change(ByVal Target As Range)
For i = [A65000].End(xlUp).Row To 1 Step -1

If Cells(i, 1) = 0 Then Rows(i).EntireRow.Hidden = True

Next i

End Sub
=====================================================================================================

Re: Ajuste de Código

Enviado: 18 Abr 2019 às 04:12
por babdallas
Tente o seguinte:
Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
          Dim rngIntervalo as Range, rngCelula as Range

         Set rngIntervalo = Range("A9:A16")

         For each rngCelula in rngIntervalo
                    If rngCelula.value2 = 0 then Rows(rngCelula.Row).EntireRow.Hidden = True
          next rngCelula

End Sub

Ajuste de Código

Enviado: 18 Abr 2019 às 20:31
por Dione
Boa noite babdallas,

Nesse código, quando o valor é 0, a célula é ocultada, porém quando informo um valor diferente de 0 ela não é reexibida. :(

Re: Ajuste de Código

Enviado: 18 Abr 2019 às 21:27
por osvaldomp
Dione escreveu: Hoje quando altero o valor de 0 para 10 por exemplo, a célula continua oculta
Como o valor é alterado, manualmente ou por fórmula ?

Se for manualmente, o seu código deveria funcionar corretamente, ou seja, desde que a linha esteja visível (e imagino que esteja, pois só assim a célula poderá ser alterada manualmente), somente se a célula estiver vazia ou com zero é que a linha será ocultada.

Por exemplo, supondo que A5 = 0, então a linha 5 estará oculta. Como exatamente você faz para alterar para A5 = 10 ?

Ajuste de Código

Enviado: 18 Abr 2019 às 22:52
por Dione
Boa noite,

Anexei um arquivo para exemplificar. Gostaria que ao informar a quantidade para zero na plan1 replique na plan2 e fique oculta. E quando mudar pra qualquer outro valor diferente de zero na plan1 , a linha seja reexibida na plan2.

Re: Ajuste de Código

Enviado: 19 Abr 2019 às 11:41
por osvaldomp
Dione escreveu: Gostaria que ao informar a quantidade para zero na plan1 replique na plan2 ...
Fazendo dessa forma a coluna Quantidade da Planilha2 ficará sempre com valor zero. É isso que você quer?
O código abaixo faz o que você pediu na última postagem.
Instale uma cópia dele no módulo da Planilha1.
Antes de testar, na Planilha2 inverta A8 com B8 para ficar igual à Planilha1.
Se houver registros repetidos na Planilha2, no caso de reexibir o registro naquela planilha, o código irá buscar o primeiro, então, se existe essa possibilidade de registros repetidos, você precisa criar um identificador único para cada registro.

Código: Selecionar todos
Private Sub Worksheet_Change(ByVal Target As Range)
 Dim c As Range
  If Target.Column <> 2 Then Exit Sub
  If Target.Value = 0 Then
   Cells(Target.Row, 1).Resize(, 7).Copy Sheets("Planilha2").Cells(Rows.Count, 1).End(3)(2)
   Sheets("Planilha2").Rows(Sheets("Planilha2").Cells(Rows.Count, 1).End(3).Row).Hidden = True
  Else
   Set c = Sheets("Planilha2").[A:A].Find(Cells(Target.Row, 1))
   If Not c Is Nothing Then
    Sheets("Planilha2").Rows(c.Row).Hidden = False
   End If
 End If
End Sub