Запуск макроса на основе изменения листа (ячейка содержит формулу)

Я думаю, что у меня есть довольно разумный / стандартный вопрос, и методы, которые я пробовал до сих пор, оказались безуспешными.

Я использую 32-разрядную версию Excel 2013, а на листе 6 в ячейке J7 у меня есть сторонняя формула, которая время от времени меняется. По сути, я хотел бы вызывать макрос каждый раз, когда изменяется значение ячейки.

Помня, что эта ячейка является формулой (я поигрался с изменением этой сторонней формулы на простую формулу, такую ​​как A1 + B1, и это не изменило поведения).

В основном Excel не вызывает мой макрос и не распознает изменение в этой ячейке, если я не набираю формулу вручную или не нажимаю F2 в ячейке Excel и не нажимаю Enter, или если я щелкаю в поле формулы и нажимаю клавишу ВВОД (все шаги требуют щелчка пользователя) .

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

https://www.extendoffice.com/documents/excel/4423-excel-run-macro-on-cell-change.html

http://www.dbforums.com/showthread.php?1661517-Execute-Macros-From-Formulas-(Or-Cell-Value)

Как запустить код VBA каждый раз, когда значение ячейки изменяется формулой?

https://www.linkedin.com/pulse/20140623100408-92734594-how-to-execute-excel-vba-macro-on-change-of-specific-cell-in-excel-sheet < / а>

https://www.excelforum.com/excel-programming-vba-macros/400984-change-in-cell-from-formula-to-auto-run-a-macro.html

http://www.ozgrid.com/forum/showthread.php?t=144429

Запустить сценарий VBA при изменении значения ячейки по формуле

Код VBA не запускается при изменении ячейки по формуле

Запуск макроса при изменении любой ячейки, содержащей формулу

автоматически выполнять макрос Excel при изменении ячейки


person user979226    schedule 11.07.2017    source источник
comment
Что это third-party formula?   -  person Plagon    schedule 11.07.2017
comment
Вам понадобится глобальная переменная для хранения значения Sheet6, ячейка J7, может заполнить эту глобальную переменную при открытой книге. А затем в событии worksheet_calculate проверьте, отличается ли значение этой ячейки от значения вашей глобальной переменной. Если они разные, то вычисление формулы дало новый результат, и остальная часть вашего кода может сработать, в противном случае не запускайте остальную часть вашего кода. Было бы легче устранить неполадки, если бы вы разместили образцы данных и текущую попытку кода.   -  person tigeravatar    schedule 11.07.2017
comment
Привет @UGP, это формула SAP.   -  person user979226    schedule 11.07.2017
comment
Привет, Тигераватар, смотрите прикрепленный файл.   -  person user979226    schedule 11.07.2017
comment
Я мало что знаю о SAP, но пробовали ли вы связать другой Cell с Cell с формулой? Если это обновление может вызвать событие Worksheet_Calculate   -  person Plagon    schedule 11.07.2017
comment
Пожалуйста, смотрите в прикрепленном файле. Он показывает стороннюю формулу, и в основном, когда пользователь вносит изменения в стороннюю надстройку в Excel, он вносит изменение в ячейку Sheet2.A1, что должно повлиять на Sheet1.A1. Однако прямо сейчас происходит то, что Sheet1.A1 остается прежним, а затем мне нужно принудительно выполнить повторный расчет (F2 + Enter в этой ячейке), и только тогда он распознает изменение и запускает мой макрос. В качестве альтернативы я добавил макрос, чтобы принудительно пересчитывать эту ячейку каждую секунду, и хотя это действительно обновляет значение в этой ячейке формулы, оно все равно не запускает мое изменение, если я не F2 + Enter в этой ячейке.   -  person user979226    schedule 11.07.2017
comment
drive.google.com/file/d/0B862OPB6fp6PWHZiUXRNQ6fp6PWHZiUXRNQ6fp6PWHZiUXRNQJ   -  person user979226    schedule 11.07.2017
comment
@UGP - это первое, что я пробовал, если вы посмотрите на прилагаемую книгу. К сожалению, это не сработало.   -  person user979226    schedule 11.07.2017


Ответы (1)


Таким образом, похоже, что у этой сторонней надстройки есть событие, которое я мог бы использовать для достижения той же конечной цели. Он не активируется при изменении этого рабочего листа, но предоставляет решение, которое я ищу.

Это событие AFTER_REFRESH, означающее, что когда REFRESH запускается через стороннюю ленту, он запускает мой vba, как я хотел.

Спасибо всем за ваши мысли / вклад.

person user979226    schedule 11.07.2017