Joydip имеет рабочий лист Excel, который постоянно и автоматически обновляется текущими данными товарного рынка. Он хочет отображать окно сообщения, содержащее конкретное сообщение, всякий раз, когда данные в указанной ячейке / диапазоне изменяются в соответствии с некоторыми предопределенными критериями. Проверка данных не будет работать, потому что функция проверки не запускается при автоматическом изменении данных.

Лучший способ проверить данные и отобразить желаемое окно сообщения — использовать макрос, который запускается событием Worksheet_Change. Это событие запускается каждый раз при изменении содержимого ячейки. Однако он не запускается при изменении того, что отображается в ячейке. Например, если в ячейку помещается новый элемент данных о товаре, запускается событие. Однако, если формула пересчитывается и отображается новый результат этой формулы, событие не запускается. Зачем?

Потому что сама формула не изменилась; изменялся только результат формулы (то, что отображается).

После запуска события Worksheet_Change макрос может делать все, что вы хотите, включая отображение вашего сообщения. В этом примере предположим, что проверяемый диапазон равен A1: C5 (сюда вставляются товарные данные) и что критерием, по которому вы хотите вызвать сообщение, является то, что среднее значение диапазона равно 5. Если содержимое любая ячейка в диапазоне изменяется, и среднее значение в диапазоне равно 5, затем отображается сообщение.

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

Важно, чтобы этот макрос был помещен в объект листа для рабочего листа, который вы хотите отслеживать. Когда вы открываете редактор VBA, щелкните правой кнопкой мыши нужный рабочий лист в области Project Explorer, затем выберите View Code из появившегося контекстного меню. Это окно кода — то место, где вы размещаете макрос.

Макрос, опять же, запускается каждый раз, когда на листе вносятся изменения. Затем макрос использует функцию пересечения, чтобы определить, произошло ли изменение в желаемом диапазоне A1: C5. Если да, то проверяется среднее значение диапазона, и отображается сообщение, если результат 5.

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (2906) применим к Microsoft Excel 97, 2000, 2002 и 2003.