Вызов события в Excel VBA при переключении на другое приложение - PullRequest
0 голосов
/ 21 июля 2011

Я ищу событие, которое вызывается, когда пользователь переключается на другое приложение (без закрытия Excel) и когда он снова переключается на Excel.Мне нужно знать это, чтобы остановить событие, вызванное таймером, которое не нужно, когда приложение не активно или ничего не изменилось.

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

Ответы [ 2 ]

0 голосов
/ 21 июля 2011

Я не уверен, сможете ли вы найти события EXCEL, которые отражают ваши потребности, поскольку переход к другому приложению - это не механизм EXCEL, а общий механизм Windows.На самом деле вы пытаетесь захватить своего рода событие «LostFocus» самого приложения Excel.Однако Excel предоставляет только триггеры событий для событий, которые «локальны для приложения Excel».

А как насчет вызова внешней программы, нажав кнопку Excel, которая содержит код для

  • setглобальная переменная состояния «I JUMPED OFF»
  • останов таймера
  • запуск внешнего приложения (Shell или аналогичный), сворачивание окна или что-то еще

плюсглобальный триггер Selection_Change, который

  • проверяет переменную состояния, и если для нее было установлено значение "I JUMPED OFF"
  • , установите для него значение "I AM HERE"
  • перезапустите таймер

Конечно, это немного слабо, и пользователь может обмануть вас, просто перемещая мышью или Alt-TAB, но если вы разверните окно при запуске, вы можете мотивироватьпользователь использует кнопки.

0 голосов
/ 21 июля 2011

Отличная статья о том, как узнать, какие события доступны, доступна здесь http://www.cpearson.com/excel/Events.aspx "Откройте Обозреватель объектов в редакторе VBA (нажмите F2 или выберите Обозреватель объектов в меню" Вид ". В списке" Классы "прокрутите внизи выберите «Рабочий лист». Щелкните правой кнопкой мыши в любом месте основного окна и выберите «Участники группы» во всплывающем меню. Затем прокрутите вниз в списке «Участники» «Рабочего листа», пока не увидите элементы с желтыми молниевыми болтами рядом с ними. Это события дляобъекты Worksheet. Сделайте то же самое для объектов Workbook и Application. "

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...