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

Глава 15. Дополнительные приемы работы с пользовательскими формами

489

Программирование зависимостей

В большинстве мастеров ответ пользователя на определенном этапе может повлиять на элементы управления, которые отображаются на последующих этапах. В примере на прилагаемом к книге компакт-диске на третьем этапе пользователь должен указать, ка­ кие программы он применяет в своей работе. После этого (на четвертом этапе) пользовате­ лю предлагается оценить выбранные программные продукты Microsoft. Элемент управ­ ления O p tio n B u tto n для каждого продукта отображается только в том случае, если пользователь выбрал этот продукт на предыдущем этапе.

С точки зрения программирования эта задача реализуется в результате обработки со­ бытия Change элемента управления M u ltiP a g e . Как только значение элемента управле­ ния M u ltiP a g e изменится (после щелчка на кнопке Назад или Вперед), будет запущена процедура M u lt i Page l_ C h a n g e . Если в элементе управления активна последняя стра­ ница (четвертый этап), то процедура проверяет значения элементов управления CheckBox

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

В данном примере используются два массива: один— для элементов управления CheckBox, соответствующих продуктам (используется на третьем этапе), а второй — для элементов управления Fram e (используется на четвертом этапе). Цикл F o r N e x t

скрывает элементы управления Fram e для тех продуктов, которые не были выбраны на

предыдущем этапе. После этого изменяется вертикальное расположение отображаемых на экране элементов управления Frame. Если на странице, соответствующей третьему

этапу работы мастера, не был выбран ни один из продуктов, то на последнем этапе скры­ ваются все элементы управления, кроме T e x tB o x , который содержит сообщение. Щелкните на кнопке Готово для выхода (если, конечно, на первом этапе введено имя). Процедура M u lt i Page l_ C h a n g e приведена ниже.

Private Sub

M u lti Page l_Change ()

 

 

1 Н а ст р а и в а т ь с т р а н и ц у р е й т и н г а ?

 

 

I f

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

=

3 Then

 

 

'

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

э л е м е н т о в

у п р а в л е н и я

CheckBox

 

Dim

P rodC B (l

To

3)

As

MSForms. CheckBox

 

 

Set

P rodC B (l)

=

cbE xcel

 

 

 

 

Set

ProdCB(2)

=

cbWord

 

 

 

 

 

Set

ProdCB(3)

=

cbAccess

 

 

 

'

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

э л е м е н т о в

у п р а в л е н и я

Frame

 

Dim

P rodF ram e(l

To

3)

As

MSForms. Frame

 

 

Set

P rodF ram e(l)

=

FrameExcel

 

 

Set

ProdFram e(2)

=

FrameWord

 

 

Set

ProdFram e(3)

=

FrameAccess

 

 

TopPos

= 22

 

 

 

 

 

 

 

 

FSpace

= 8

 

 

 

 

 

 

 

 

AtLeastO ne =

F alse

 

 

 

 

 

1

П р о см о тр в с е х п р о д у к т о в

 

 

 

 

 

For

i

= 1 To

3

 

 

 

 

 

 

 

 

I f

P rodC B (i)

Then

 

 

 

 

 

 

 

P ro d F ra m e (i).V is ib le

= True

 

 

 

 

ProdFram e(i ) . Top

=

TopPos

 

 

 

 

TopPos

= TopPos

+

P ro d F ra m e (i).H e ig h t + Fspace

 

 

 

AtLeastO ne

= True

 

 

 

 

 

E lse

 

 

 

 

 

 

 

490

 

 

 

 

 

 

 

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

 

 

 

P ro d F ra m e (i).V is ib le

=

F alse

 

 

End

I f

 

 

 

 

 

 

N ext i

 

 

 

 

 

 

1

Ни

од и н и з п р о д у к т о в не

в ы бран?

 

I f

AtLeastO ne Then

 

 

 

 

 

 

 

lb lH e a d in g s .V is ib le

=

True

 

 

 

Im a g e 4 .V is ib le

= True

 

 

 

 

 

lb lF in is h M s g .V is ib le

=

F alse

 

E lse

 

 

= F alse

 

 

lb lH e a d in g s .V is ib le

 

 

Im a g e 4 .V is ib le

= F alse

 

 

 

 

lb lF in is h M s g .V is ib le

=

True

 

 

I f

tbName = ""

Then

 

 

 

 

 

 

 

lb lF in is h M s g . C a p tio n

=

_

 

 

 

"В в е д и т е

имя

на

э т а п е 1 . "

 

 

E lse

 

 

 

=

_

 

 

 

lb lF in is h M s g . C a p tio n

 

 

 

"Щ елкните

на

к н о п к е

Г о т о в о д л я в ы х о д а ."

 

 

End

I f

 

 

 

 

 

 

End I f

 

 

 

 

 

 

 

End I f

 

 

 

 

 

 

 

End

Sub

 

 

 

 

 

 

 

Выполнение задачи

Когда пользователь щелкает на кнопке Готово, мастер выполняет свою задачу: пере­ мещает информацию из диалогового окна U se rF o rm в следующую пустую строку рабо­ чего листа. Эта процедура под названием F in is h B u t t o n _ C lic k довольно проста. Она

начинается с определения следующей пустой строки рабочего листа и задания значения переменной (г). Остальная часть процедуры выполняет идентификацию значений эле­

ментов управления и ввод данных в ячейки листа.

P riv a te

Sub

F in is h B u tto n _ C lic k ()

 

 

 

Dim

r

As

Long

 

 

 

 

 

 

 

_

r =

A p p lic a tio n .W o rk s h e e tF u n c tio n .

 

C ountA(Range( "A :A ") ) +

1

 

 

 

 

 

1 В с т а в и т ь

имя

 

 

 

 

 

 

 

 

C e lls (г ,

1)

=

tbN am e.Text

 

 

 

 

 

 

1 В с т а в и т ь

пол

 

 

 

 

 

 

 

 

S e le c t Case

True

C e lls ( r ,

2)

 

=

 

 

 

 

Case

obM ale:

 

"М уж чина"

 

Case

obFemale: C e lls ( r ,

2)

=

"Ж енщина"

 

Case

obNoAnswer: C e lls ( r ,

 

2)

=

" Н е и з в е с т н о "

End

S e le c t

 

 

 

 

 

 

 

 

 

1 О п р е д е л и ть и с п о л ь з у е м о с т ь

 

 

 

 

 

 

C e lls (г ,

3)

=

cbE xcel

 

 

 

 

 

 

C e lls ( r ,

4)

=

cbWord

 

 

 

 

 

 

C e lls ( r ,

5)

=

cbAccess

 

 

 

 

 

 

В с т а в и т ь о ц е н к и

C e lls (r ,

6)

 

 

и и

 

I f

o b E x c e ll

Then

 

_

 

I f

obExcel2

Then

C e lls ( r ,

6)

 

=

0

 

I f

obExcel3

Then

C e lls (r ,

6 )

 

=

1

 

I f

obExcel4

Then

C e lls ( r ,

6 )

 

=

2

 

I f

obW ordl

Then

C e lls ( r ,

7)

 

_

и и