Como ocultar filas a través del valor de una celda

Tengo una tabla en la cual donde necesito que: cuando a1 sea igual a 0 oculte el rango a1:c3; y de igual forma si a4 fuera igual a 0, oculte el rango b4:c7. Para ello necesito que se ejecute la macro automáticamente, sin necesidad de incrporarle un botton para que se corra la macro.
Gracias de antemano por su ayuda

1 respuesta

Respuesta
1
Te dejo el siguiente código a ver si te sirve
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If UCase(Sh.Name) = "HOJA1" Then
        If Target.Address = "$A$1" Then
            If Range(Target).Value = 0 Then
                Range("A1:C3").EntireRow.Hidden = True
                Range("B4:C7").EntireRow.Hidden = False
            End If
        End If
        If Target.Address = "$A$4" Then
            If Range(Target).Value = 0 Then
                Range("A1:C3").EntireRow.Hidden = False
                Range("B4:C7").EntireRow.Hidden = True
            End If
        End If
    End If
End Sub
Deberás entrar al editor de Visual Basic ALT+F11 y en el panel Proyecto hacer doble clic sobre el objeto ThisWorkbook, y ahí pones este código que va a funcionar sólo cuando cambien las celdas A1 o A4 de la Hoja 1.
Gracias por su pronta contestación, intente ejecutar la macro pero, cuando intento cambiar los valores de las celdas a1 y a4 (para probarlo poniendo valores iguales o mayores a 0 ) me aparece un error 1004 en tiempo de ejecusion "Error en el método ´Range´ de Objeto´_Global´ y no me oculta las filas.
Perdona que te vuelva a molestar, pero la verdad ya queme mi reserva de neuronas... Gracias por su comprensión
HSR
A ver te dejo el código con una corrección
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If UCase(Sh.Name) = "HOJA1" Then
        If Target.Address = "$A$1" Then
            If Range(Target.Address).Value = 0 Then
                Range("A1:C3").EntireRow.Hidden = True
                Range("B4:C7").EntireRow.Hidden = False
            End If
        End If
        If Target.Address = "$A$4" Then
            If Range(Target.Address).Value = 0 Then
                Range("A1:C3").EntireRow.Hidden = False
                Range("B4:C7").EntireRow.Hidden = True
            End If
        End If
    End If
End Sub
Esta perfecto ese código, reitero mi agradecimiento, y perdone que me abuse con otra cosita, es que si pongo los dos valores 0, siempre muestra una celda ya sea a1 o a4.
Muchas gracias por tu ayuda
Ahh ok, eso es porque pensé que eran excluyentes
A ver te dejo el código con una corrección
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) 
    If UCase(Sh.Name) = "HOJA1" Then 
        If Target.Address = "$A$1" Then 
            If Range(Target.Address).Value = 0 Then 
                Range("A1:C3").EntireRow.Hidden = True 
            End If 
        End If 
        If Target.Address = "$A$4" Then 
            If Range(Target.Address).Value = 0 Then 
                Range("B4:C7").EntireRow.Hidden = True 
            End If 
        End If 
    End If 
End Sub
Muchísimas gracias, voy a implementarlo, ¿y si tuviera alguna consulta podría volver a molestarte?. Desde ya te doy un 10 "excelente" muchísimas gracias por la atención, excelente de verdad.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas