Задался целью останавливать работающий макрос при переходе с конкретного листа и возврате на него. Сделал почти всё - макрос запускается при открытии файла, останавливается при переходе на другой лист/другую книгу и запускается при возврате на этот лист, не грузит процессор. Осталась одна нерешённая проблема - как заставить срабатывать события книги Workbook_Activate и Workbook_Deactivate при переходе на другое приложение и возврате к Excel т.к. они срабатывают только при переключении между книгами?
Останов макроса при переходе на стороннее приложение сделал с помощью API GetFocus (любое стороннее приложение = 0).
Вопрос: Какая команда/API сможет вызвать событие Deactivate окна Excel?
Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Long ... If GetFocus() = 0 Then
'??? Деактивация Excel ???
End If ...
Форумы читал, Google спрашивал, даже OpenAi мне не помог.
Для примера взял файл от ZVI минимально его изменив.
Добрый день!
Задался целью останавливать работающий макрос при переходе с конкретного листа и возврате на него. Сделал почти всё - макрос запускается при открытии файла, останавливается при переходе на другой лист/другую книгу и запускается при возврате на этот лист, не грузит процессор. Осталась одна нерешённая проблема - как заставить срабатывать события книги Workbook_Activate и Workbook_Deactivate при переходе на другое приложение и возврате к Excel т.к. они срабатывают только при переключении между книгами?
Останов макроса при переходе на стороннее приложение сделал с помощью API GetFocus (любое стороннее приложение = 0).
Вопрос: Какая команда/API сможет вызвать событие Deactivate окна Excel?
Declare Function GetCursorPos Lib "user32.dll" (ByRef lpPoint As POINTAPI) As Long ... If GetFocus() = 0 Then
'??? Деактивация Excel ???
End If ...
Форумы читал, Google спрашивал, даже OpenAi мне не помог.
Для примера взял файл от ZVI минимально его изменив.ddp1481ne
Основная цель: - остановка макроса отслеживания координат мыши в исходной книге для запуска макросов в другой книге. - остановка макроса отслеживания координат мыши для открытия другой книги кликом мыши по файлу. Вроде бы это можно решить запуском каждого экземпляра Excel в отдельном процессе, но для меня судя по описанию это решение не подходило.
Макрос запускается при открытии книги. Запущенный макрос останавливается при переключении на другое приложение/книгу и запускается при возврате на исходную книгу.
Проблему с постоянной загрузкой потока процессора решил с помощью Sleep. Не совсем понял почему но субъективно время отклика наименьшее у такой конструкции: DoEvents Sleep 1 ' Задержка DoEvents Можно задержку установить и больше, но мне нужно было минимальное время отклика для реализации вызова всплывающих окон в своём проекте.
Пример основан на файле от ZVI.
Методом проб и ошибок проблему решил.
Основная цель: - остановка макроса отслеживания координат мыши в исходной книге для запуска макросов в другой книге. - остановка макроса отслеживания координат мыши для открытия другой книги кликом мыши по файлу. Вроде бы это можно решить запуском каждого экземпляра Excel в отдельном процессе, но для меня судя по описанию это решение не подходило.
Макрос запускается при открытии книги. Запущенный макрос останавливается при переключении на другое приложение/книгу и запускается при возврате на исходную книгу.
Проблему с постоянной загрузкой потока процессора решил с помощью Sleep. Не совсем понял почему но субъективно время отклика наименьшее у такой конструкции: DoEvents Sleep 1 ' Задержка DoEvents Можно задержку установить и больше, но мне нужно было минимальное время отклика для реализации вызова всплывающих окон в своём проекте.