Buenos días:
Dentro de un mismo libro tengo varias hojas. En la primera del libro llamada Datos tengo esta macro:
Sub esconder()
If Sheets("DATOS").[B60] = "NO" Then
Rows("61:92").EntireRow.Hidden = True
Else
Rows("61:92").EntireRow.Hidden = False
End If
If Sheets("DATOS").[B93] = "NO" Then
Rows("94:124").EntireRow.Hidden = True
Else
Rows("94:124").EntireRow.Hidden = False
End If
If Sheets("DATOS").[B125] = "NO" Then
Rows("126:161").EntireRow.Hidden = True
Else
Rows("126:161").EntireRow.Hidden = False
End If
End Sub
Y efectivamente cuando en la celda B60 pone NO se esconden las filar y cuando pone si, aparecen.
En el mismo libro tengo una página llamada VALORACION. Tengo la siguiente macro en este libro:
ub ESCONDEROFERTA()
If Sheets("VALORACION").[D54] = "NO" Then
Rows("55:77").EntireRow.Hidden = True
Else
Rows("55:77").EntireRow.Hidden = False
End If
End Sub
Pero en este caso cuando pone No en la celda asignada co ejecuta la macro. Si entro en la macro y le doy a ejecutar, lo hace, pero no lo hace automaticamente como en la primera macro que os he enseñado.
Ma sabríais explicar porque? No lo entiendo.
Muchas gracias por vuestra ayuda.
Para que una macro se ejecute, se debe lanzar manualmente, desde otra macro, o capturar un evento.
Por ejemplo, cuando asocias una macro al click en un botón, estás haciendo que cuando se dé el evento "click" en el botón se ejecute esa macro que has asociado.
Si lo que quieres es que al cambiar el valor en tus celdas se ejecute la macro, entonces deberás lanzarla desde el evento onChange de tu hoja de cálculo. Dentro de este evento es habitual poner condicionales que comprueben que el objeto target (que es la celda que ha cambiado, la que dispara el evento) es efectivamente la celda o celdas que tú quieres que lancen tu macro. Si se cumple, lanza desde ahí esconderoferta.
Espero haber sido claro.
Un saludo