Вы хотите подключиться к событию Worksheet_Change
.
Как-то так должно начаться:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value = "OVER" Then
MsgBox "Cell " & Target.Address & " crosses OVER"
ElseIf Target.Value = "UNDER" Then
MsgBox "Cell " & Target.Address & " crosses UNDER"
End If
End Sub
Sub just_testing()
Dim mycell As Object
Set mycell = ActiveSheet.Cells(1, 1)
Call Worksheet_Change(mycell)
End Sub
С этим кодом изменение значения ячейки A1 на OVER (с учетом регистра!) Выведет сообщение «Ячейка $ A $ 1 пересекает OVER».
Редактировать на основе дополнительной информации, предоставленной ОП:
Для автоматического изменения рабочего листа вам нужно использовать событие Worksheet_Calculate (пример ниже). И по какой-то странной причине Excel, похоже, требует, чтобы в любом месте на рабочем листе было =NOW()
, чтобы Worksheet_Calculate действительно запускался.
Private Sub Worksheet_Calculate()
Dim mycell As Object
Set mycell = ActiveSheet.Cells(1, 1)
If mycell.Value = "OVER" Then
MsgBox "Cell " & mycell.Address & " crosses OVER"
ElseIf mycell.Value = "UNDER" Then
MsgBox "Cell " & mycell.Address & " crosses UNDER"
End If
End Sub