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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.07.2011, 13:33   #1
Серёга0629
Форумчанин
 
Регистрация: 21.04.2011
Сообщений: 128
По умолчанию Работа с Label

Добрый день!
ситуация состоит в следующем: при открытии книги запускается форма, если нажать на кнопку "запустить" то выполняется макрос, но перед строчкой вызывающей макрос есть строка выводящяя сообщение "подождите" в Label

Код:
UserForm1.Label1.Caption = "ПОДОЖДИТЕ!"
Module1.Макрос1
Всё работает! НО!!! сначала выполняется макрос, а тлько потом выводится сообзение, а не наоборот, почему? и как это исправить?
этот макрос создан для примера, но есть макросы котые выполняются не секунду а больше, в них это более наглядно.
Спасибо!)
Вложения
Тип файла: zip 111111.zip (12.2 Кб, 11 просмотров)
Серёга0629 вне форума Ответить с цитированием
Старый 19.07.2011, 14:09   #2
Серёга0629
Форумчанин
 
Регистрация: 21.04.2011
Сообщений: 128
По умолчанию

Всё пучком! поставил задержку макроса:
Код:
Application.Wait (Now + TimeValue("0:00:03"))
Серёга0629 вне форума Ответить с цитированием
Старый 19.07.2011, 14:25   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

а ещё можно попробовать перед вызовом макроса написать DoEvents
:
Код:
UserForm1.Label1.Caption = "ПОДОЖДИТЕ!"
DoEvents
Module1.Макрос1
p.s. не проверял, но вроде бы должно помочь...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.07.2011, 15:53   #4
Серёга0629
Форумчанин
 
Регистрация: 21.04.2011
Сообщений: 128
По умолчанию

Работает, спасибо)) так даже лучше, время не уходит)
Серёга0629 вне форума Ответить с цитированием
Старый 19.07.2011, 16:44   #5
RAN.
Форумчанин
 
Аватар для RAN.
 
Регистрация: 05.07.2011
Сообщений: 208
По умолчанию

Решил потестить, как все это выглядит.
Для наглядности вставил в код Макроса1 цикл
Код:
t = Timer
Do
If t <= Timer - [D1] Then Exit Do
Loop
Если время работы макроса сделать 5 секунд и более, появляется сообшение, что форма не отвечает, форма с экрана исчезает, код повисает.
С чем это связано, и как с этим бороться?
RAN. вне форума Ответить с цитированием
Старый 19.07.2011, 17:00   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

RAN
вызывайте обработчик сообщений DoEvents в цикле..

например,
Цитата:
Код:
t = Timer
Do
  DoEvents
  If t <= Timer - [D1] Then Exit Do
Loop
p.s. кстати, подобный цикл - ВАРВАРСТВО!!!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.07.2011, 18:18   #7
EducatedFool
Программист VBA
СуперМодератор
 
Аватар для EducatedFool
 
Регистрация: 13.07.2008
Сообщений: 6,856
По умолчанию

После UserForm1.Label1.Caption = "ПОДОЖДИТЕ!"
надо поставить UserForm1.Repaint
для принудительной перерисовки формы
EducatedFool вне форума Ответить с цитированием
Старый 19.07.2011, 22:22   #8
RAN.
Форумчанин
 
Аватар для RAN.
 
Регистрация: 05.07.2011
Сообщений: 208
По умолчанию

Цитата:
Сообщение от EducatedFool Посмотреть сообщение
После UserForm1.Label1.Caption = "ПОДОЖДИТЕ!"
надо поставить UserForm1.Repaint
для принудительной перерисовки формы
И никаких проблем!

p.s. кстати, а почему подобный цикл - ВАРВАРСТВО!!!

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


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа с label.... L.A.M.E.R. Помощь студентам 1 20.11.2010 21:01
Работа с Label MAZADA Помощь студентам 6 11.11.2010 17:23
работа с label miki131 Общие вопросы Delphi 6 07.07.2010 08:44
Работа с label niva622 Помощь студентам 11 06.09.2007 17:49
Вопрос по label. Как сделать так чтобы label была прозрачной. Lonix Компоненты Delphi 2 01.04.2007 06:23