Передать на печать

Excel 2007: размораживаем ваш код

Один из членов нашей команды недавно заметил проблему с кодом Excel VBA, запущенном на Windows Vista (то же самое встречается и на Windows XP, но более выражено это в Windows Vista), таким образом я решил написать об этом...

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

Вопрос состоит в том, как Excel ведет себя, когда VBA код загружается непрерывно более 5 секунд – например когда вы запускаете какой-нибудь вид цикла, который длится более 5 секунд. На Windows XP приблизительно после 5 секунд, если пользователь начинает нажимать на приложение, чтобы посмотреть что произошло, он получает сообщение “Not Responding” (Не отвечает) в заголовке программы (чего многие люди не замечают).



Поведение Excel на Windows Vista такое же, но с одним исключением – в Vista сделали так, чтобы пользователю было более понятно о том что приложение “Not Responding” (Не отвечает). В том смысле, что приложение имеет вид, названный “инеем”, что означает, что когда пользователь начинает щелкать вокруг окна, все окно принимает полупрозрачный вид (Те из вас кто живет в северном климате узнают его как иней(похоже на вид окна зимой – прим. переводчика)), тем самым намекая пользователю что случилось что-то нехорошее(произошла ошибка). Словом, произошло изменение в Windows Vista, в сравнении с Windows XP, в контроле приложения, когда то не отвечает



Это может быть полезным во многих случаях, но все же не лучшая идея если какое-либо приложение будет запущено поверх вашего документа Excel.

Поскольку зависание происходит от того, что Office не может послать сообщение для ОС, когда запущен макрос(самая простая работа включает запрос DoEvents в коде, чтобы произвести обработку посланного сообщения), то в результате выполнения цикла, требующего времени – происходит преобразование вида окна в “иней” и появляется “Not Responding” (Не отвечает) в заголовке приложения.

Источник: http://blogs.msdn.com/excel/
Перевод: lexa

  Передать на печать





Все права принадлежат © MSInsider.ru и TheVista.ru, 2013
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 1.1 (Страница создана за 0.078 секунд)