Я использовал код с веб-страницы Microsoft, чтобы каждый раз, когда ячейка моего диапазона менялась, окно сообщения автоматически сообщает мне, что это произошло. Страница: https://support.microsoft.com/en-us/kb/213612Макрос, который смотрит на вывод ячейки, а не на формулу
код, который я скопировал и вставил это (я слегка редактировали - редактирует в коде ниже):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("B1:B10")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
' Display a message when one of the designated cells has been
' changed.
' Place your code here.
MsgBox "Cell " & Target.Address & " has changed."
End If
End Sub
Однако этот код не делая именно то, что я хотел бы сделать. Внутри B10 у меня есть формула:
=IF(D10="709A", IF(AND(D10="709A"), "Yes", "No"), "")
Формула сама по себе не важна, это то, что делает формула. Формула выводит «Да» в B10, если D10 вводится с «709A». Поэтому, по моим сведениям, я должен автоматически получить окно сообщения из моего макроса, если я введу «709A» в D10, потому что он изменяет значение B10. Но я этого не делаю. Я получаю сообщение только в том случае, если сама формула изменяется, даже если выход (значение/то, что видно в ячейке, есть ли техническая метка для этого?) Не изменяется. Как я могу создать макрос, который автоматически сообщает мне, когда изменяется выход ячейки? I.e: это говорит мне, что выход изменился с «" на «Да», когда D10 вводится с «709A»?
Спасибо, Дейв! Yeh, похоже, что VBA не предлагает элегантного решения, которое является позором, но ваши и римские B помогают :) –