Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.06.2011, 18:14   #1
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию Событие "прекращение выполнения макроса"

Есть несколько макросов которые в своей работе создают диалоговые окна. Нужно: что бы по завершению работы любого из этих макросов запускался макрос. Как это сделать? Было бы удобно сделать это через событие (а то не ровен час уйдем в зацикливание), но такого я не нашел. Как быть?
С уважением, Алексей.
tae1980 вне форума Ответить с цитированием
Старый 22.06.2011, 19:16   #2
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

последней строкой в каждом макросе запускаем "ПоследнийМакрос"

"ПоследнийМакрос" при запуске проверяет состояние глобальной переменной, и если её значение говорит о том, что копия этого макроса уже запущена, - то он завершает работу.

как-то так:

Код:
public a as boolean

sub ПоследнийМакрос()
if a then exit sub
a=true
' код макроса
a=false
end sub
EducatedFool вне форума Ответить с цитированием
Старый 22.06.2011, 21:56   #3
tae1980
Форумчанин
 
Регистрация: 02.02.2009
Сообщений: 842
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
последней строкой в каждом макросе запускаем "ПоследнийМакрос"
"ПоследнийМакрос" при запуске проверяет состояние глобальной переменной, и если её значение говорит о том, что копия этого макроса уже запущена, - то он завершает работу.
как-то так:
Спасибо. Это поможет избежать зацикливания. Но нужно исправлять ВСЕ макросы, чего мне очень-очень хотелось бы избежать.
Опишу проблему подробнее: на экране постоянно присутствует форма запущенная в режиме vbModeless. При выполнении в макросе команды "Exit" происходит закрытие не только самого макроса, но и формы работающей в режиме vbModeless. Нужно его снова открыть. Сама форма работающая в режиме vbModeless расположен в xla. То есть, в теории, должна быть универсальна и "работать" со всеми макросами.
У себя я решу проблему (замена "Exit" на "Exit Sub" не проблема) , но при этом теряется универсальность. Так как при работе с книгами других людей, где будут свои макросы, может возникнуть та же проблема. Единственный способ 100% борьбы я вижу в обязательном запуске после каждого макроса (из любой книги) макроса из xla которые проверит наличие окна в режиме vbModeless и если его нет - восстановит его.
Как я понимаю, наложить иммунитет на форму от команды "Exit" возможности нет.
В чем я не прав? И как можно решить проблему?
С уважением, Алексей.

Последний раз редактировалось tae1980; 22.06.2011 в 22:08.
tae1980 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как "повесить " передачу данных из формы на событие нажатия кнопки типа "button" ? vedro-compota JavaScript, Ajax 10 14.12.2010 21:05
Прекращение выполнения макроса AesmaDiv Microsoft Office Excel 6 12.12.2010 18:30
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Проблемма: Программное отключение "защиты формы" влияет на скорость выполнения программного кода... StrikeR33 Microsoft Office Word 0 28.05.2008 20:11