VBA: Не работает UserForm_Deactivate.

Автор noname6171, 23 октября 2018, 18:43

noname6171

Почему не срабатывает событие "UserForm_Deactivate", когда я перехожу с формы (UserForm) на лист?
Ведь фокус с формы переходит на лист, почему не срабатывает событие "UserForm_Deactivate"?
Фокус меняю в пределах приложения - ячейки листа или другой лист.

Администратор

Событие "Deactivate" не запускается при щелчке по эксель-листу.
Значит для данной задачи событие "Deactivate" не подходит.
Как решить вашу задачу другими способами, не знаю.

Событие "Deactivate" срабатывает, если происходит переход между формами макроса.
В офиц. справке (https://docs.microsoft.com/en-us/office/vba/language/reference/user-interface-help/activate-deactivate-events) написано:
The Activate and Deactivate events occur only when you move the focus within an application. Moving the focus to or from an object in another application doesn't trigger either event.

Что означает, что событие происходит, когда переход между формами происходит внутри одной программы.
То есть макрос и программа "Excel" для макроса это не одна и та же программа, а разные. То есть щелчок на эксель-листе имеет такой же эффект, как если бы вы перешли в другую программу, например в браузер (Internet Explorer).

noname6171