Código VBA que muestre filas, dependiendo del contenido calculado en una celda

Hola. Estoy intentando generar el código adecuado que me muestre algunas filas ocultas, dependiendo del contenido calculado en una celda y he generado el procedimiento que anexo a este, pero no logro que la acción se realice. ¿Alguien me puede indicar que estoy haciendo mal? Gracias anticipadas.

Private Sub Worksheet_Calculate()
Dim Wkb As Workbook, WksInfGen As Worksheet
Dim Sel As Integer
 Set Wkb = ThisWorkbook
 Set WksInfGen = Wkb.Worksheets("Inf Gen")
 Sel = Range("Y17").Value
 Application.ScreenUpdating = False
 Application.EnableEvents = False
 Select Case Sel
 Case 1
 Rows("18:24").EntireRow.Hidden = False
 Case 2
 Rows("18:20").EntireRow.Hidden = False
 Rows("25:28").EntireRow.Hidden = False
 Case 3
 Rows("18:20").EntireRow.Hidden = False
 Rows("29:32").EntireRow.Hidden = False
 Case 4
 Rows("33:36").EntireRow.Hidden = False
 Case 5
 Rows("37:40").EntireRow.Hidden = False
 Case 6
 Rows("41:44").EntireRow.Hidden = False
 End Select
End Sub

1 respuesta

Respuesta
1

Después de esta línea

End Select

Tienes que poner esta línea, para que el evento se active nuevamente.

Application.EnableEvents = True

Si no se está ejecutando, crea una pequeña macro, para que los eventos estén activos, por ejemplo:

Sub ev()
Application.EnableEvents = True
End Sub

Ejecuta la pequeña macro y luego haz cambios en tu hoja para que veas los resultados.

Saludos. Dante Amor
Si es lo que necesitas.

Discúlpame, estoy aprendiendo VBA. No te capto cuando dices "si no se está ejecutando". Gracias por tu tiempo.

Vamos desde el principio; tu macro se ejecuta cuando modificas algún valor que afecta el resultado de tu fórmula que tienes en la celda Y17, ¿correcto?

La macro se ejecuta, gracias a que tienes este evento: Private Sub Worksheet_Calculate, correcto? Para esto tu macro debe estar en la hoja "Inf Gen".

Tu macro funciona bien, pero solamente una vez. Ya que tienes en tu macro está instrucción:

Application.EnableEvents = False

Esta instrucción se utiliza para "apagar" los eventos, quiere decir que este evento: Private Sub Worksheet_Calculate, ya no va a funcionar.

Para que los eventos funcionen otra vez, ejecuta primero esta macro, solamente tienes que ejecutarla una vez.

Sub ev()
Application.EnableEvents = True
End Sub

Ahora, para corregir tu macro, tienes que agregar esta línea, en donde te dije.

Application.EnableEvents = True

Esta sería tu macro completa:

Private Sub Worksheet_Calculate()
Dim Wkb As Workbook, WksInfGen As Worksheet
Dim Sel As Integer
 Set Wkb = ThisWorkbook
 Set WksInfGen = Wkb.Worksheets("Inf Gen")
 Sel = Range("Y17").Value
 Application.ScreenUpdating = False
 Application.EnableEvents = False
 Select Case Sel
    Case 1
        Rows("18:24").EntireRow.Hidden = False
    Case 2
        Rows("18:20").EntireRow.Hidden = False
        Rows("25:28").EntireRow.Hidden = False
    Case 3
        Rows("18:20").EntireRow.Hidden = False
        Rows("29:32").EntireRow.Hidden = False
    Case 4
        Rows("33:36").EntireRow.Hidden = False
    Case 5
        Rows("37:40").EntireRow.Hidden = False
    Case 6
        Rows("41:44").EntireRow.Hidden = False
 End Select
Application.EnableEvents = True
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas