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

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

Далее приведена процедура обработки события O K B u tto n _ C lic k . Эта процедура создает объект Range, называющийся RowRange. Он состоит из строк, соответствую­ щих выделенным опциям в элементе управления L is tB o x . Для того чтобы определить

факт

выделения опции, в коде проверяется значение свойства S e le c te d

элемента

управления L is tB o x . Обратите внимание на использование функции U n io n

для добав­

ления дополнительных диапазонов к объекту RowRange.

 

 

 

P riv a te

Sub

O K B u tto n _ C lic k ()

 

 

 

 

Dim

RowRange

As Range

 

 

 

 

 

RowCnt

=

0

 

 

 

 

 

 

For

r

= 0

To

L is t B o x l. L is tC o u n t - 1

 

 

 

 

I f

L is t B o x l. S e le c te d (r)

Then

 

 

 

 

 

 

RowCnt

= RowCnt

+ 1

 

 

 

 

 

 

 

I f

RowCnt = 1 Then

 

+

1)

 

 

 

 

 

Set

RowRange

= A ctive S h ee t.U se dR a ng e . Rows(r

 

 

 

 

E lse

 

 

 

 

 

 

 

 

 

 

Set

RowRange

= _

 

+

1))

 

 

 

 

 

Union(RowRange, A c tiv e S h e e t. UsedRange. Rows(r

 

 

 

 

End

I f

 

 

 

 

 

 

 

End

I f

 

 

 

 

 

 

 

N ext

r

 

 

 

 

 

 

 

 

I f

Not

RowRange Is N o th in g

Then RowRange. S e le c t

 

 

 

U nload

Me

 

 

 

 

 

 

 

End Sub

 

 

 

 

 

 

 

 

 

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

Рассмотренный в этом разделе пример находится на прилагаемом к книге компакт-диске в файле lis t b o x s e le c t row s .xlsm .

Использование элемента управления ListBox для активизации листа

Пример, приведенный в этой главе, и полезен, и познавателен. В нем использован элемент управления L is t B o x с несколькими столбцами (еще его называют многоколо­

ночным) для отображения списка рабочих листов активной рабочей книги. В столбцах содержатся следующие данные:

имя листа;

тип листа (рабочий лист, диаграмма или диалоговый лист Excel 5/95);

количество непустых ячеек в листе;

состояние листа.

На рис. 14.17 показан пример подобного диалогового окна.

Код процедуры U s e r F o r m _ I n it ia liz e (который приведен ниже) создает двумер­

ный массив и собирает информацию, циклически просматривая листы активной рабочей книги. После этого массив передается в элемент управления L is tB o x .

P u b lic

O rig in a lS h e e t

As O b je c t

P riv a te

Sub U s e r F o r m _ In itia liz e ()

Dim

SheetD ataO As

S trin g

Set

O rig in a lS h e e t

= A c tiv e S h e e t

S htC nt

= A ctive W o rkb o o k . S h e e ts . Count

ReDim

S h e e tD a ta (l

To S h tC nt, 1 To 4)

ShtNum

= 1

 

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

Значение элемента управления CheckBox (с названием cbP review ) определяет не­ обходимость предварительного просмотра листа после того, как пользователь щелкнет на соответствующей опции списка элемента управления L istB ox .

Щелчок на кнопке ОК (объект OKButton) приводит к выполнению процедуры O K Button_Click, которая показана ниже.

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

Dim

UserSheet

As

O b je c t

Set

UserSheet

=

S h e e ts (L is tB o x l.V a lu e )

I f

U s e rS h e e t.V is ib le Then

 

U s e rS h e e t.A c tiv a te

E lse

 

 

 

 

I f

MsgBox ( "Отобразить листы?11, _

 

 

vb Q u e stio n

+ vbYesNoCancel) = vbYes Then

 

 

U s e rS h e e t.V is ib le = True

 

 

U s e rS h e e t.A c tiv a te

 

E lse

 

 

 

 

O rig in a lS h e e t.A c tiv a te

 

End

I f

 

 

End

I f

 

 

 

U nload

Me

 

 

End Sub

Процедура O K Button_C lick создает объектную переменную, которая представляет выделенный лист. Если лист отображается, то он активизируется. Если лист скрыт, то на экран выводится сообщение, в котором предлагается сделать лист видимым. Если поль­ зователь даст утвердительный ответ на запрос, то лист будет отображен и активизирует­ ся. В противном случае активизируется исходный лист (который хранится в переменной

O r ig in a lS h e e t).

Двойной щелчок на опции списка в элементе управления L istB o x приводит к тому

же результату, что и щелчок на кнопке ОК. Процедура L istB o x l_ D b lC lic k , которая

отображена ниже, вызывает процедуру O K Button_Click.

P riv a te

Sub L is tB o x l_ D b lC lic k (B y V a l Cancel As _

SForms. R eturnB oolean)

C a ll

O K B u tto n _ C lick

End Sub

 

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

Рассматриваемый в этом разделе пример находится на прилагаемом к кни­ ге компакт-диске в файле lis t b o x a c tiv a te s h e e t.x ls m .

Применение элемента управления M u ltiP a g e

Элемент управления M u ltiP age применяется при отображении в пользовательских диалоговых окнах множества элементов управления. Элемент управления M ultiPage позволяет группировать опции, а также размещать каждую группу на отдельной вкладке.

На рис. 14.18 показан пример формы UserForm, которая включает M ultiPage. В этом случае элемент управления содержит три страницы, каждая из которых находится на своей вкладке.