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?
Donde me diste este excelente código:
 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
Disculpame, se me olvido decirte que los datos de a1 y a4 son referenciados de otra hoja, por lo al cambiar a 0 el dato de la hoja2 por ejemplo, tengo que ir a hoja1 a darle enter al valor que cambio para que se oculte, hay posibilidades de que se ejecute automáticamente, ¿sin necesidad de buscar el valor 0 y dar enter? También quisiera saber si se puede hacer un ciclo quizás, para que cuando el valor de la hoja2 cambie y sea distinto a 0 muestre aquellas filas ocultas de la hoja 1.

1 respuesta

Respuesta
1
Sólo necesito saber cual celda de la hoja 2 cambia y afecta a la celda a1 de la hoja 1 y lo mismo para la ceda a4 de la hoja 1
de todos modos te dejo otro código con los ajustes necesarios.
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If UCase(Sh.Name) = "HOJA2" Then
        If Target.Address = "$A$1" Then
            Worksheets("Hoja1").Range("A1").Value = Worksheets("Hoja2").Range("A1").Value
        End If
        If Target.Address = "$A$4" Then
            Worksheets("Hoja1").Range("A4").Value = Worksheets("Hoja2").Range("A4").Value
        End If
    End If
    If UCase(Sh.Name) = "HOJA1" Then
        If Target.Address = "$A$1" Then
            If Range(Target.Address).Value = 0 Then
                Worksheets("Hoja1").Range("A1:C3").EntireRow.Hidden = True
            Else
                Worksheets("Hoja1").Range("A1:C3").EntireRow.Hidden = False
            End If
        End If
        If Target.Address = "$A$4" Then
            If Range(Target.Address).Value = 0 Then
                Worksheets("Hoja1").Range("B4:C7").EntireRow.Hidden = True
            Else
                Worksheets("Hoja1").Range("B4:C7").EntireRow.Hidden = False
            End If
        End If
    End If
End Sub
Si deseas te puedo enviar por correo el archivo donde hice las pruebas
mi correo es [email protected]
Gracias, te agradezco si me podes enviar tu archivo de prueba ([email protected]) con respecto a las celdas de la hoja2 serien las celdas D6 para la celda a1 de la hoja1, y D9 para la celda a4 de la hoja1.
Muchas gracias
Ya te envié el archivo de ejemplo.
Esta excelente. Solamente que cuando modifico un valor de la hoja2 al darle enter para que acepte el cambio automáticamente me dispara a la hoja 1, intente corregirlo activando la hoja 2 después de la cndicional if, lo que me funciono para la la hoja 2 en d9 pero no en d6, no se si me podes ayudar con eso.
Aquí te dejo el código
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    If UCase(Sh.Name) = "HOJA2" Then
        If Target.Address = "$D$6" Then
            Worksheets("Hoja1").Range("A1").Value = Worksheets("Hoja2").Range("D6").Value
        End If
        If Target.Address = "$D$9" Then
            Worksheets("Hoja1").Range("A4").Value = Worksheets("Hoja2").Range("D9").Value
        End If
        Worksheets("Hoja2").Activate
    End If
    If UCase(Sh.Name) = "HOJA1" Then
        Worksheets("Hoja1").Activate
        If Target.Address = "$A$1" Then
            If Range(Target.Address).Value = 0 Then
                Worksheets("Hoja1").Range("A1:C3").EntireRow.Hidden = True
            Else
                Worksheets("Hoja1").Range("A1:C3").EntireRow.Hidden = False
            End If
        End If
        If Target.Address = "$A$4" Then
            If Range(Target.Address).Value = 0 Then
                Worksheets("Hoja1").Range("B4:C7").EntireRow.Hidden = True
            Else
                Worksheets("Hoja1").Range("B4:C7").EntireRow.Hidden = False
            End If
        End If
    End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas