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

Глава

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

Вэтой главе...

Немодальные диалоговые окна

Отображение индикатора текущего состояния

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

Имитация работы функции MsgBox

Диалоговое окно U se rF o rm с перемещаемыми элементами управления

Диалоговое окно U serForm без строки заголовка

Имитация панели инструментов с помощью диалогового окна U se rF o rm

Диалоговое окно U serForm с изменяемыми размерами

Несколько кнопок с одной процедурой обработки событий

Диалоговое окно выбора цвета

Отображение диаграммы в пользовательском диалоговом окне Use г Form

Создание полупрозрачной формы ввода данных

Расширенная форма ввода данных

Игра в “ пятнашки”

Играем в видеопокер в окне U se rF o rm

Вэтой главе рассматриваются примеры, которые не вошли в главу 14, в частности дополнительные примеры форм U serF orm .

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

475

Перекрестная ссылка

U J Обратитесь к главе 19 за дополнительными сведениями о событиях.

Ниже приведен код процедур-обработчиков событий.

Private

Sub

W orkbook_S heetSelectionC hange _

(ByVal Sh

As O b je c t, ByVal T a rg e t As

Range)

C all

UpdateBox

 

End Sub

 

 

 

Private

Sub

W o rkb o o k _ S h e e tA ctiva te (B yV a l

Sh As O b je ct)

C all

UpdateBox

 

End Sub

 

 

 

Описанные выше процедуры вызывают процедуру U pdateB ox, код которой приво­ дится ниже.

Sub UpdateBox ()

With U serForm l

'

П р о вер ка

а к т и в н о с т и

л и с т а

 

I f

T ypeN am e(A ctiveS heet)

<> "W orksheet" Then

 

 

. lb lF o rm u la . C a p tio n

=

"Н /Д"

 

 

. lblN um F orm at. C a p tio n

= "Н /Д"

 

 

. lb lL o c k e d .C a p tio n

=

"Н /Д"

 

 

E x it

Sub

 

 

 

 

End

I f

 

 

 

 

 

.C a p tio n

= "Я ч е й к а :

"

& A c tiv e C e ll.A d d re s s (F a ls e , F alse )

 

Формула

 

 

 

 

 

I f

A c t iv e C e ll. HasForm ula

Then

 

 

. lb lF o rm u la . C a p tio n

=

A c t iv e C e ll. Form ula

 

Else

 

 

=

 

 

 

. lb lF o rm u la . C a p tio n

" ( н е т ) "

 

End I f

 

 

 

 

1

Ч и сл о в о й

ф ормат

 

 

 

 

. lblN um F orm at. C a p tio n

=

A ctive C e ll.N u m b e rF o rm a t

1

З а б л о к и р о в а н о

= A c t iv e C e ll. Locked

 

. lb lL o c k e d . C a p tio n

 

End W ith

 

 

 

 

End Sub

Процедура U p d a te B o x изменяет заголовок диалогового окна U serF orm , который

отображает адрес активной ячейки. После этого обновляются три элемента управления

Label ( lb lF o r m u la , lb lN u m F o rm a t и lb lL o c k e d ) .

Ниже приведена информация, которая поможет понять, как работает этот код.

Форма U se rF o rm отображается в немодальном режиме, вследствие чего она ос­

тается на экране, даже если пользователь работает с листом.

Код в верхней части процедуры проверяет, является ли рабочий лист активным. Ес­

ли это не рабочий лист, то элементы управления L a b e l получают заголовок Н/Д.

Активная ячейка отслеживается благодаря событию S e le c tio n _ C h a n g e

 

(которое обрабатывается в модуле T h is W o rk b o o k (ЭтаКнига)).

Информация отображается в элементе управления L a b e l пользовательской формы.