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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2016, 10:12   #1
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию Добавить индикатор процесса в код макроса

Здравствуйте Уважаемые программисты!
Подскажите пожалуйста как в код ниже (excel 2003. Код срабатывает при открытии книги Excel и создает листы с именами таблиц из файла mdb) добавить progressBar (т.е. изменение, например, ширины Label-а на форме, которая открывается в начале и скрывается по окончании кода)?
Заранее спасибо!

Код:
For Each tb In Database.TableDefs
If Not tb.Name Like ("*Sys*") Then
Set MySheet = Worksheets.Add
MySheet.Name = tb.Name
End If
Next
ольгаг вне форума Ответить с цитированием
Старый 21.06.2016, 10:22   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Первоочередное - нужен цикл от 1 до количества этих TableDefs, ну или их счётчик (с известным максимальным числом), ну а далее уже можно приладить любой доступный прогресбар, а их много разных.
Но мне всегда хватает обычного статусбара.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 на форуме Ответить с цитированием
Старый 21.06.2016, 10:24   #3
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

EducatedFool имеет статью по прогрессбаре. Смотрите у него на сайте

Цитата:
Сообщение от Hugo121 Посмотреть сообщение
Первоочередное - нужен цикл от 1 до количества этих TableDefs, ну или их счётчик (с известным максимальным числом), ну а далее уже можно приладить любой доступный прогресбар, а их много разных.
Но мне всегда хватает обычного статусбара.
Цикл по всех TableDefs или только где есть *Sys*?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 21.06.2016, 10:33   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Думаю можно по всем - да и проще так. Ну будет рывками бежать... и пусть. И думаю не особо будет разница - сколько там времени занимает создание листа, практически ничего.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 на форуме Ответить с цитированием
Старый 21.06.2016, 11:04   #5
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Спасибо за обсуждение.
Скажите пожалуйста, если допустим известно количество TableDefs, т.е. в начале кода их количество определяется. То как написать цикл (по всем TableDefs где нет в имени*Sys*) от 1 tb до последней tb менять например ширину Label-а на форме (как индикатора)?
Хотелось бы попробовать прогрессбар, т.к. после добавления листа идет еще код его наполнения, но думаю привязать цикл к количеству этих таблиц.

Последний раз редактировалось ольгаг; 21.06.2016 в 11:09.
ольгаг вне форума Ответить с цитированием
Старый 21.06.2016, 11:30   #6
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

см. вложение
Вложения
Тип файла: rar ПрогрессБар_в_СтатусЛайн.rar (18.8 Кб, 21 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 21.06.2016, 11:39   #7
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

можна в RecordSet загнать запрос который считает количество таблиц.
потом в цикле от 1 до recordset.recordcount делать что-то типа
Код:
frmProgressBar.lbl.width = i * recordcount/maxLblWidth
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 21.06.2016, 11:42   #8
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Цикл по всем таблицам ведь уже есть - просто внутри поставьте счётчик i=i+1, к нему и привязывайте прогресс. К счётчику и конечному известному значению.
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 на форуме Ответить с цитированием
Старый 21.06.2016, 12:34   #9
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 325
По умолчанию

Спасибо большое, попробую сделать.
ольгаг вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добавить листы при работе макроса? Smile7 Microsoft Office Excel 3 09.11.2012 13:57
Оптимизировать код макроса manowar_gub Microsoft Office Excel 2 03.06.2012 19:52
Есть макрос. Надо в него добавить вывод на печать после каждого процесса. Ogeris Microsoft Office Excel 1 01.11.2010 07:55
Написать код макроса Trimbl Microsoft Office Excel 2 15.10.2009 03:51
код для макроса oboevrulon Microsoft Office Excel 7 10.06.2009 10:39