Страницы: 1
RSS
Можно ли сделать форму которая показывает "подождите завершения процесса" при выполнении макроса?
 
Уважаемые форумчане!

Подскажите, кто нибудь может делал, можно ли сделать форму типа MsgBox, которая откроется при запуске макроса и будет показывать "пожалуйста подождите...", т.е. параллельный процесс?
Использую ProgressIndicator, но минус в том что для него необходим цикл. В некоторых макросах цикловых операций не много, но длительность выполнения большая за счет открытия, закрытия сетевых книг, преобразование форматов и сохранения в PDF. В общем чтобы не было завязано на циклы, а просто открыться, ну можно чтобы кружок крутился как у винды.
 
А открыть форму в начале макроса и закрыть в конце? Чем не то?
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Да то, просто не знаю возможен ли параллельный процесс с использованием форм...
Ну и так понимаю вращающийся кружок нереально сделать?
Изменено: ac1-caesar - 26.02.2015 14:13:09
 
Попробовать открыть форму ПЕРЕД выполнением процедуры  Вы, конечно же, не додумались...
 
Да что то ступил...
Вращающийся кружок или бегающие точки - вопрос открыт.
Изменено: ac1-caesar - 26.02.2015 14:17:05
 
вращающийся кружок (но только над формой) http://joxi.ru/QeAOPyaT9Mbkro
F1 творит чудеса
 
Цитата
Максим Зеленский написал: вращающийся кружок (но только над формой)
Интересно, но конечно лучше бы на самой форме...
 
ищете по ключу "прогрессбар"
к пред ораторам уточню, что форму нужно открывать в немодальном режиме
Живи и дай жить..
 
Да уже кучу пересмотрел, я же говорю что использую ProgressIndicator (самый интересный на мой взгляд), но все на цикл завязаны и все с использованием нарастающего Label. В принципе понимаю, что параллельно процесс внутри кода работать не может, но вдруг у кого то есть нестандартное решение...:D  
 
Думаю можно кружок - анимированный гиф заготовить, вывести его на форму (не проверял, но может гиф не будет анимироваться?...).
В процессе кодом момжно его прятать-показывать, менять надписи на Label.
 
Цитата
Hugo написал: анимированный гиф заготовить, вывести его на форму
Проверил, не работает. Наверное нужно как то запускать этот гиф.
 
вот налепил на скорую руку (запускать макрос test)
Живи и дай жить..
 
http://www.planetaexcel.ru/forum/?FID=8&PAGE_NAME=read&TID=11875
 
ALFA, не получается зарегистрировать библиотеку.
 
Слэн, Так как же его параллельно запустить, чтобы пока этот прогресс бар крутил палочки еще и основной макрос выполнялся??
Изменено: ac1-caesar - 27.02.2015 04:37:38
 
Чтобы прогрессбар - это нужно знать время выполнения всей процедуры, вы его не знаете.
Чтобы крутились палочки - м.б. попробовать это - смена крестика мышки на вращающийся кружочек?
Application.Cursor = xlWait ' вращающийся кружочек (или песочные часы...)
Application.Cursor = xlDefault  ' то, что по умолчанию
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
Цитата
ac1-caesar написал: Так как же его параллельно запустить, чтобы пока этот прогресс бар крутил палочки еще и основной макрос выполнялся??
так я же вроде всеобемлющий пример написал..
цикл по i и есть имитация вашего макроса, а перед ним запускается форма в немодальном режиме и внутри цикла меняются ее параметры
Живи и дай жить..
 
Слэн, цикл должен быть бесконечным и не зависимым от основной процедуры т.е. если кружок - крутится бесконечно, если прогрессбар - тоже должен заполняться циклично и нет никакой необходимости знать время выполнения процедуры.  
 
Цитата
Михаил Лебедев: смена крестика мышки на вращающийся кружочек?... (или песочные часы...)
Ага, можно теперь такую анимацию на форму поместить, а не на курсор?
 
Нет, нельзя
Всё сложное - не нужно. Всё нужное - просто /М. Т. Калашников/
 
1. VBA не поддерживает асинхронные процессы.
2. Зачем так категорично на форму? Зачем рюшки там, где они не нужны? Выведите форму, напишите большими буквами, что процесс выполняется. Продублируйте это в StatusBar. На форме можно добавить картинку, чтобы не повадно было по кнопкам тыкать. И все. Большинству пользователей этого за глаза хватить. А кому не хватит - тому и Ваши кружочки и всякие анимации радости не принесут - всегда будет чего-то не хватать.
3. Для самой формы можно установить тип курсора - свойство формы или отдельного элемента - MousePointer. Но на форму анимацию можно поместить только если используется некий цикл, т.к. придется картинку динамически менять. А т.к. п.1 сообщения нас ограничивает - отдельный цикл для анимации сделать не получится.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Все, понял отстал. Может оно действительно перебор.:)
 
Я не сторонник прогрессбаров - зазря только ресурс потребляют, без них быстрее.
Если процесс долгий - можно информацию о процессе или этапах процесса выводить в статусбар.
Если хочется красиво - можно по ходу процесса менять надписи на форме (такое делал, но практически тоже не использую).
Жаль конечно что на форме гиф не крутится...
 
Цитата
Hugo Жаль конечно что на форме гиф не крутится...
Согласен, было бы интересно.
 
Для тех, кому будет интересно разместить gif на форму смотрите здесь, проверено работает. Ларчик просто открывался!
 
Смотрим здесь  
 
У меня этот вариант не сработал. Так и не смог зарегистрировать библиотеку.
 
Свежий компонент для анимированных гифов, не проверял
Изменено: Hugo - 03.03.2015 13:21:37
 
Цитата
ac1-caesar написал:
Слэн  , цикл должен быть бесконечным и не зависимым от основной процедуры т.е. если кружок - крутится бесконечно, если прогрессбар - тоже должен заполняться циклично и нет никакой необходимости знать время выполнения процедуры.
извините, но я тогда не знаю как вам объяснить.. видимо, сейчас так в школе учат, что чуть в сторону, отличие в одной букве от примера и все..

в наше время учили подмечать общее, понимать принципы..
Живи и дай жить..
Страницы: 1
Наверх