Отображение сообщений при автоматическом изменении данных (Microsoft Excel)
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.