События Excel игнорируются / больше не перехватываются, т. Е. Worksheet_Change не вводится при изменении - PullRequest
0 голосов
/ 15 февраля 2011

Я работаю над сложным решением на основе электронных таблиц. Иногда пользователь сталкивается с проблемой, когда события в листе, похоже, больше не перехватываются Excel.

В настоящее время я не могу повторить это поведение, но я просмотрел рассматриваемый ПК и могу подтвердить, что, несмотря на то, что точка останова не установлена, ни один из них не вызывается:

Worksheet_Activate ()
Worksheet_Deactivate ()
Worksheet_Change (ByVal Target As Range)
Worksheet_BeforeDoubleClick (целевое значение ByVal как диапазон, отменить как логическое значение)

Это, конечно, будет решено старой классикой «Вы устали включать и выключать (Excel) снова и снова», но мне было интересно, как это может произойти, и как это можно предотвратить?

Я даже поместил Stop / MsgBox "бла" в методы, чтобы посмотреть, была ли это просто точкой останова в VBE, но я ничего не получил за это.

Итак, кто-нибудь знает, почему в Excel нет ничего более громкого, освещающего события?

Приветствия.

FRD

Ответы [ 2 ]

4 голосов
/ 15 февраля 2011

Проверьте ваши коды для:

Application.EnableEvents=False

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

Если вы установили значение False в начале своей процедуры и остановили процедуру, прежде чем снова установить ее в True, то она останется отключенной.

Если ваш код падает до достижения строки Application.EnableEvents=True, он также останется отключенным.

0 голосов
/ 03 февраля 2017

Однажды у меня возникла эта проблема на листе, который не содержит никаких формул ... и именно поэтому Excel не выполняла событие вычисления!

Примечание. Событие вычисления Iнужно было запустить какой-то код, если таблица данных была отфильтрована ... так что я закончил тем, что добавил маленькую Sum (), которая указывала на столбец в моей таблице в скрытой ячейке, и достаточно забавно, у которого было событие Calculate для запуска каждоговремя фильтрации листа:)

...