Joydip tiene una hoja de cálculo de Excel que se actualiza constante y automáticamente con datos en vivo del mercado de productos básicos. Quiere mostrar un cuadro de mensaje que contiene un mensaje en particular cada vez que los datos en una celda / rango específico cambian para cumplir con algunos criterios predefinidos. La validación de datos no funcionará, porque la función de validación no se activa cuando los datos cambian automáticamente.

La mejor manera de verificar los datos y mostrar el cuadro de mensaje deseado es usar una macro que se desencadena por el evento Worksheet_Change. Este evento se activa cada vez que se cambia el contenido de una celda. Sin embargo, no se desencadena por un cambio en lo que se muestra en una celda. Por ejemplo, si se coloca una nueva pieza de datos de productos básicos en una celda, se activa el evento. Sin embargo, si se vuelve a calcular una fórmula y se muestra un nuevo resultado de esa fórmula, el evento no se desencadena. ¿Por qué?

Porque la fórmula en sí no cambió; sólo se modificó el resultado de la fórmula (lo que se muestra).

Una vez que se activa el evento Worksheet_Change, la macro puede hacer cualquier cosa que desee, incluida la visualización de su mensaje. Para este ejemplo, supongamos que el rango para verificar es A1: C5 (aquí es donde se insertan los datos del producto básico) y que el criterio que desea activar el mensaje es que el promedio del rango es 5. Si el contenido de se cambia cualquier celda en el rango y el promedio de los valores en el rango es 5, luego se muestra un mensaje.

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim rng As Range     Set rng = Range("A1:C5")

If Not Intersect(Target, rng) Is Nothing Then         If Application.WorksheetFunction. _           Average(rng) = 5 Then             MsgBox "The average of " & _               rng.Address & " = 5"

End If     End If     Set rng = Nothing End Sub

Es importante que esta macro se coloque en el objeto de hoja de la hoja de trabajo que desea supervisar. Cuando muestre el Editor de VBA, haga clic con el botón derecho en la hoja de trabajo deseada en el área del Explorador de proyectos, luego elija Ver código en el menú contextual resultante. Esta ventana de código es donde coloca la macro.

La macro, nuevamente, se activa cada vez que hay un cambio en cualquier parte de la hoja de trabajo. Luego, la macro usa la función Intersecar para determinar si el cambio ocurrió dentro del rango deseado de A1: C5. Si lo hizo, se verifica el promedio del rango y se muestra el mensaje si el resultado es 5.

ExcelTips es su fuente de formación rentable en Microsoft Excel.

Este consejo (2906) se aplica a Microsoft Excel 97, 2000, 2002 y 2003.