VBA для тех кто любит думать


ProgressBar в ваших программах


Во многих программах для Windows используется такой элемент, как ProgressBar - индикатор, показывающий, на сколько продвинулся тот или иной процесс. В частности, он есть практически во всех программах-инсталляторах. К сожалению, в VBA этот элемент отсутствует, но его можно сделать самостоятельно!

Выглядеть он будет, например, так, как на рис.8.6.

А делается он следующим образом (предполагается, что у нас есть часть программы, в которой выполняется длинный и долгий цикл: то есть известное нам количество множество однотипных операций, и которую надо снабдить ProgressBar'ом):

1. Создаем небольшую форму и помещаем на нее: надпись с пояснительным текстом (например, "Label1") и две другие надписи, (скажем, "Label2" и "Label3"), низкие и широкие, которые расположим одну над другой (рис.8.7).

 

08_06.bmp

Рис. 8.6. ProgressBar в программе на VBA

 

08_07.bmp

Рис. 8.7. А вот как он сделан

 

К примеру, их координаты и размеры:

Label2: Top - 45, Left - 15, Height - 15, Width - 250

Label3: Top - 45, Left - 15, Height - 15, Width - 0

Зададим в качестве фонового цвета для "Label2" - серый, а для "Label3" - зеленый (свойство "BackColor", вкладка "Палитра" - рис.8.8).

 

08_08.bmp

Рис. 8.8. Выбор фонового цвета для ProgressBar'а - здесь.

 

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

 

Private Sub UserForm_Activate()

… остальной текст программы, которая должна выполняться во время отображения ProgressBar'а …

Unload Me

End Sub

 

Все, что находится в теле этого обработчика, будет выполняться, в то время как форма будет находиться на экране. По окончании выполнения программы форма будет выгружена (хотя выгружать ее не обязательно, если после окончания программы в обработчике предполагается продолжение работы с формой). Однако никакие другие события формой обрабатываться в это время не будут.




Начало  Назад  Вперед