Функция VBA для оповещения об изменении значения в течение периода времени - PullRequest
0 голосов
/ 06 августа 2009

У меня есть ячейка Excel, значение которой обновляется каждую минуту.

Мне нужно окно с предупреждением; в то время как значение этой ячейки перемещается в определенное время.

Предположим, что ячейка имеет значение 10:

  • если он достигнет 7 за одну минуту, мне нужно окно сообщения, чтобы предупредить об этом.

  • если оно не достигает 7 в одну минуту, тогда мне не нужно оповещение.

Пожалуйста, помогите написать мне макрос для этого.

Ответы [ 2 ]

5 голосов
/ 06 августа 2009

В редакторе VBA для ThisWorkBook вы можете написать следующий код

Dim WithEvents SheetToWatch As Worksheet

Private Sub SheetToWatch_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
    If Target.Value = 7 Then
        MsgBox "changed to 7"
    End If
End If
End Sub
Private Sub Workbook_Open()
    Set SheetToWatch = Sheets("Sheet1")
End Sub

В основном код устанавливает ссылку Sheet1 на переменную SheetToWatch при открытии книги. Объявление переменной с помощью WithEvents позволяет захватывать события.

Я использую событие Change рабочего листа и проверяю, была ли измененная ячейка A2. Если это так, я проверяю или сравниваю значение с 7 (оно может быть динамическим и зависит от того, как вы хотите его обработать).

Посмотрите, поможет ли это.

0 голосов
/ 06 августа 2009

Невозможно сделать с помощью функции, как мне кажется.

Если вы управляете механизмом, который обновляет ячейку, то вы можете вызвать вызванную вами подпрограмму VBA, вместо этого придется отправить предупреждение и затем обновить ячейку из этой подпрограммы.

Если вы не контролируете механизм обновления, то единственное, о чем я могу подумать, что это может сработать, - это то, что классы Cell, Range или Worksheet имеют событие ChangedDate, которое вы можете перехватить из VBA и сделать оттуда оповещение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...