Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая / Источники / excel_2010_professionalnoe_programmirovanie_na_vba_RuLit_Me_412629.pdf
Скачиваний:
4
Добавлен:
27.09.2025
Размер:
22.97 Mб
Скачать

484

Часть IV. Пользовательские формы

Этот оператор

приводит к активизации второй вкладки элемента управления

M u ltiP a g e (страницы, на которой отображается индикатор текущего состояния).

На следующем шаге необходимо самостоятельно создать код, который будет вычислять степень выполнения задачи. Полученное значение следует присвоить переменной PctDone.

Скорее всего, расчеты будут производиться внутри цикла. После этого нужно добавить при­ веденный ниже оператор, который будет обновлять индикатор текущего состояния.

C a ll U pdateP rogress(P ctD one)

Как это работает

Данная методика довольно проста и, кроме того, требует использования только одно­ го диалогового окна U serF orm . В коде программа переходит к другой странице элемен­ та управления M u ltiP a g e и превращает нормальное диалоговое окно в индикатор те­

кущего состояния.

Отображение индикатора текущего состояния без применения элемента управления MultiPage

Пример, приведенный в этом разделе, подобен методу, представленному в предыду­ щем разделе. Но рассмотренная далее методика немного проще, так как не требует при­ менения элемента управления M u ltiP a g e . Вместо этого индикатор текущего состояния содержится в нижней части диалогового окна U serF orm . Для того чтобы элементы

управления, составляющие индикатор текущего состояния, изначально не были видны, высота диалогового окна U se rF o rm была уменьшена до соответствующего размера. Как

только нужно будет отобразить индикатор текущего состояния, высота диалогового окна U se rF o rm увеличится, что сделает индикатор видимым на экране.

Компакт-диск

Пример описанной методики находится на прилагаемом к книге компактдиске в файле p ro g re s s in d ic a to r 3 . xlsm .

На рис. 15.7 показано диалоговое окно U serForm в редакторе VBE. Свойство H e ig h t диалогового окна U serForm имеет значение 172. Но перед тем как отобразить диалоговое окно U serForm , значение свойства H e ig h t устанавливается равным 124 (это приводит к

тому, что элементы управления, представляющие индикатор текущего состояния, становятся невидимыми). Как только пользователь щелкнет на кнопке ОК, код VBA изменит значение свойства H e ig h t на 172. Для этого используется следующий оператор:

M e .H e ig h t = 172

На рис. 15.8 показано диалоговое окно U se rF o rm с отображенным индикатором те­

кущего состояния.

Создание мастеров

Во многих приложениях для предоставления пользователям пошаговых инструкций по выполнению определенных задач используются специальные мастера. Мастер импор­ та текстовых файлов Excel является хорошим примером такого подхода к решению за­ дач. Мастер — это, по сути, последовательность диалоговых окон, которые предостав­ ляют пользователю информацию и запрашивают у него необходимые сведения. Часто

488

Часть IV. Пользовательские формы

I f Ans

= vbYes Then U nload Me

End Sub

 

Ниже приведена процедура обработки событий для кнопок Назад и Вперед.

P riv a te Sub B a c k B u tto n _ C lic k ()

 

 

 

M u ltiP a g e l.V a lu e

= M u ltiP a g e l.V a lu e

-

1

End

U p d a te C o n tro ls

 

 

 

Sub

 

 

 

P riv a te Sub N e x tB u tto n _ C lic k ()

 

 

 

M u ltiP a g e l.V a lu e

= M u ltiP a g e l.V a lu e

+

1

End

U p d a te C o n tro ls

 

 

 

Sub

 

 

 

Эти две процедуры очень просты. Они изменяют значение свойства V alue элемента

управления M u ltiP age, после чего вызывают другую процедуру, которая называется U p d a teC on trols (данная процедура будет показана ниже).

Процедура U p d ateC on trols отвечает за включение и отключение кнопок Васк-

B u tton и N extB utton .

Sub

U p d a te C o n tro ls ()

 

 

 

 

 

 

 

S e le c t

Case M u ltiP a g e l.V a lu e

 

 

 

Case

0

 

 

 

 

 

 

 

 

B a ckB u tto n .E n a b le d

=

F alse

 

 

 

N e x tB u tto n . Enabled

=

True

 

 

Case

M u ltiP a g e l. Pages. Count -

1

 

 

B a c k B u tto n . Enabled

=

True

 

 

 

N e x tB u tto n . Enabled

=

F alse

 

 

Case

E lse

 

 

 

 

 

 

 

 

B a c k B u tto n . Enabled

=

True

 

 

 

N e x tB u tto n . Enabled

=

True

 

 

End

S e le c t

 

 

 

 

 

 

1

Обновить заголовок

 

 

 

 

 

 

 

M e .C a ptio n = APPNAME

& "

Шаг

"

 

 

&

M u ltiP a g e l.V a lu e

+

1

& "

из

" _

 

&

M u ltiP a g e l. Pages. Count

 

 

'

Поле

Имя заполнять

обязательно

 

 

I f tbN am e.Text = ""

Then

 

 

 

 

 

F in is h B u tto n . Enabled

=

F alse

 

 

E lse

 

 

 

 

 

 

 

 

 

F in is h B u tto n . Enabled

=

True

 

 

End

I f

 

 

 

 

 

 

 

End

Sub

 

 

 

 

 

 

 

 

Процедура изменяет заголовок диалогового окна UserForm, и в результате он ото­ бражает текущий этап работы мастера и общее количество этапов (константа APPNAME является глобальной и определена в модуле кода M odulel). После этого проверяется содержимое поля Имя на первой странице элемента управления M u ltiP age (для созда­

ния этого поля используется элемент управления TextBox, который называется tbName). Данное поле обязательно нужно заполнить, поэтому кнопка Готово отключена

до момента заполнения. Если элемент управления T extB ox остается пустым, кнопка F in ish B u tto n отключена. В противном случае кнопка Готово активизируется, и у

пользователя появляется возможность щелкнуть на ней.