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

468

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

лить только элемент управления, щелкните на его границе. Кроме того, можете воспользоваться клавишей <ТаЬ> для циклического перемещения между элемен­ тами управления. Еще одним вариантом выделения элемента управления является выбор пункта MultiPage из раскрывающегося списка окна Properties.

Если элемент управления M u ltiP a g e содержит много вкладок, то присвойте его

свойству M u ltiR o w значение T ru e , чтобы отобразить вкладки в несколько строк.

Если необходимо, то вместо вкладок можно отображать кнопки. Достаточно из­

менить значение свойства S t y le элемент управления M u ltiP a g e

на 1. Если значение свойства S t y le равно 2, не будет отображать ни вкладки, ни кнопки.

• Свойство T a b O r ie n ta t io n определяет расположение вкладок на элементе управления M u ltiP a g e .

Для каждой страницы можно установить эффект перехода. Для этого воспользуй­

тесь свойством T r a n s it io n E f f e c t. Например, щелчок на вкладке приведет к то­ му, что новая страница “отодвинет” старую. Применяйте свойство T r a n s it io n - P e rio d , чтобы задать скорость эффекта перехода.

Использование внешних элементов управления

Пример, рассматриваемый в этом разделе, основан на элементе управления Microsoft Windows Media Player. Несмотря на то что он не является элементом управления Excel (настраивается при установке Windows), он прекрасно работает с формами UserForm .

Для того чтобы воспользоваться элементом управления Microsoft Windows Media Player выполните следующие действия.

1.Активизируйте среду VBE.

2.Щелкните правой кнопкой мыши на панели T o o lb o x и в контекстном меню вы­ берите параметр Additional Controls (Дополнительные элементы управления).

Если окно Toolbox не отображается, выполните команду Viev\F>Toolbox (Вид1^

Окно Tookbox).

3.В окне Additional Controls установите флажок Windows Media Player.

4.Щелкните на кнопке ОК.

Набор инструментов пополнится новым элементом управления.

На рис. 14.19 показаны элемент управления Windows Media Player, встроенный в форму Use г Form, а также окно Properties. Свойство URL определяет URL-ссылку вос­

производимой композиции (музыкальная запись или видеоролик). Если композиция на­ ходится на жестком диске вашего компьютера, свойство URL определяет полный путь и

имя соответствующего файла.

На рис. 14.20 показан пример использования этого элемента управления. Для сокры­ тия окна, предназначенного для отображения видеороликов, была уменьшена высота ок­ на элемента управления Windows Media Player. Также был добавлен список, созданный на основе элемента управления L is tB o x , в котором отображаются аудиофайлы MP3. После щелчка на кнопке Пуск (Play) начинается воспроизведение выбранного файла. Щелчок на кнопке Закрыть (Close) приведет к прекращению воспроизведения и к за­ крытию окна U serF orm . Форма U se rF o rm отображается в немодальном режиме, по­

этому можно продолжать работу во время отображения диалогового окна.

470

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

Рассматриваемый пример весьма прост. Названия МРЗ-файлов в окне списка отобра­ жаются с помощью процедуры U s e r F o r m _ I n it ia liz e . В целях упрощения алгорит­

ма аудофайлы находятся в той же папке, что и рабочая книга. Можно реализовать и бо­ лее гибкий подход, предусматривающий выбор пользователем папки, содержащей тре­ буемые аудиофайлы.

P riv a te

Sub

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

 

Dim

FileName As S trin g

'

З а п о л н е н и е с п и с к а н а з в а н и я м и М РЗ -ф ай ло в

 

FileName

= D ir(T h is W o rk b o o k . Path & "\* .m p 3 ", vbNorm al)

 

Do W hile

Len(FileN am e) > 0

 

L is tB o x l.A d d lte m

FileName

 

FileName = D ir ( )

 

 

Loop

 

 

= 0

 

L is t B o x l. L is tln d e x

End

Sub

 

 

 

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

Дополнительные сведения об использовании команды D ir можно найти в главе 27.

Код обработчика событий P la y B u tto n _ C lic k включает единственный оператор, который присваивает выбранное имя файла свойству URL объекта W indow sM edia-

P la y e r l.

 

 

P riv a te Sub

P la y B u tto n _ C lic k ()

1 С в о й с т в о

URL з а г р у ж а е т

м у зы к а л ьн ы й т р е к и з а п у с к а е т п л е е р

W indow sM ediaPlayerl.U R L

= _

T hisW orkbook. Path & " \ "

& L is t B o x l. L is t ( L is t B o x l . L is tln d e x )

End Sub

 

 

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

Анимация элемента управления L a b e l

В последнем примере этой главы демонстрируется анимация элемента управления L a b e l. Форма U serF orm , показанная на рис. 14.21, представляет собой интерактивный

генератор случайных чисел.

Два элемента управления T e x tB o x содержат верхнее и нижнее значения для слу­ чайного числа. Элемент управления L a b e l изначально отображает четыре знака во­ проса, а после щелчка мышью на кнопке Пуск отображаются анимированные случай­ ные числа. При этом кнопка Пуск превращается в кнопку Остановить, а щелчок на

ней мышью приводит к прекращению анимации и отображению случайного числа. На рис. 14.22 показано диалоговое окно, в котором отображается случайное число в диа­ пазоне от 1 до 10000.

Ниже приводится код, связанный с кнопкой генератора случайных чисел.

Dim Stopped

As Boolean

 

P riv a te

Sub

S ta rtS to p B u tto n _ C lic k ()

 

Dim

Low As D ouble, H i As Double

 

I f

S ta rtS to p B u tto n .C a p tio n = " S ta r t"

Then

1

П р о в е р к а м и н и м а л ь н о го и м а к с и м а л ь н о го з н а ч е н и й

 

I f

Not

Is N u m e ric (T e x tB o x l. T e x t) Then

 

 

MsgBox "Н е ч и с л о в о е з н а ч е н и е . " ,

v b ln fo rm a tio n

Глава 14. Примеры пользовательских форм

 

 

 

 

471

 

 

W ith

T e xtB o xl

 

 

 

 

 

 

 

 

 

 

.S e lS ta rt = О

 

 

 

 

 

 

 

 

 

 

.S e lL e n g th = L e n (.T e x t)

 

 

 

 

 

 

 

. SetFocus

 

 

 

 

 

 

 

 

 

 

End

W ith

 

 

 

 

 

 

 

 

 

 

End

E x it

Sub

 

 

 

 

 

 

 

 

 

 

I f

 

 

 

 

 

 

 

 

 

 

 

 

 

I f

Not

IsN u m e ric (T e x tB o x 2 . T e x t)

Then

 

 

 

 

 

MsgBox

"Н е ч и с л о в о е к о н е ч н о е

з н а ч е н и е . " , v b ln fo rm a tio n

 

 

W ith

TextBox2

 

 

 

 

 

 

 

 

 

 

.S e lS ta r t = 0

 

 

 

 

 

 

 

 

 

 

.S e lL e n g th = L e n (.T e x t)

 

 

 

 

 

 

 

. SetFocus

 

 

 

 

 

 

 

 

 

 

End

W ith

 

 

 

 

 

 

 

 

 

 

End

E x it

Sub

 

 

 

 

 

 

 

 

 

 

I f

 

 

 

 

 

 

 

 

 

 

 

 

'

А т е п е р ь

у д о с т о в е р и м с я ,

ч т о

вы бран п ра в и л ьн ы й п о р я д о к

 

Low

= A p p lic a tio n .M in (V a l( T e x tB o x l.T e x t) ,

_

 

 

 

V a l(T e x tB o x 2 . T e x t))

 

 

 

 

 

 

 

 

 

H i

= A p p lic a tio n .M a x (V a l(T e x tB o x l.T e x t),

_

 

 

 

V a l(T e x tB o x 2 .T e x t))

 

 

 

 

 

 

 

 

'

Н а с т р о й к а

р а з м е р а шрифта

(при н е о б х о д и м о с т и )

_

 

S e le c t

Case

A p p lic a tio n .M a x (L e n (T e x tB o x l.T e x t),

 

 

L e n (T extB o x2 . T e x t))

 

 

 

=

72

 

 

 

 

Case Is

<

5:

L a b e ll. F o n t. S ize

 

 

 

 

 

Case

5:

L a b e ll. F o n t. S ize

=

60

 

 

 

 

 

 

Case

6 :

L a b e ll. F o n t. S ize

=

48

36

 

 

 

 

End

Case

E ls e : L a b e ll. F o n t. S ize

=

 

 

 

 

S e le c t

 

 

 

 

 

 

 

 

 

 

 

S ta rtS to p B u tto n .C a p tio n

=

" О с т а н о в и т ь "

 

 

 

 

Stopped

=

F alse

 

 

 

 

 

 

 

 

 

Randomize

 

 

 

 

 

 

 

 

 

 

 

Do

U n t il

Stopped

 

 

-

Low + 1)

*

Rnd +

Low)

 

 

L a b e ll. C a p tio n = I n t ( (Hi

 

 

DoEvents

' В ы п ол нени е

ан и м ац и и

 

 

 

 

Loop

 

 

 

 

 

 

 

 

 

 

 

 

 

Else

 

 

= True

 

 

 

 

 

 

 

 

 

Stopped

 

=

 

 

 

 

 

 

 

 

S ta rtS to p B u tto n . C a p tio n

"П у с к "

 

 

 

 

 

End I f

 

 

 

 

 

 

 

 

 

 

 

 

 

End Sub

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Поскольку кнопка выполняет две функции (запуск и остановка анимации), в процеду­

ре используется общедоступная переменная S to p p e d ,

с помощью которой отслежива­

ется состояние

кнопки. Первая часть процедуры состоит из двух структур If - T h e n ,

с помощью которых проверяется содержимое элементов управления T e x tB o x . Два дру­

гих подобных оператора позволяют удостовериться в том, что меньшая величина дейст­ вительно не превосходит большей величины. В следующем разделе кода осуществляется настройка размера шрифта элемента управления L a b e l на основании максимальной ве­ личины. Цикл Do U n t i l lo o p генерирует и отображает случайные числа. Обратите внимание на оператор D o E ve n ts . Он позволяет Excel использовать все возможности операционной системы. Если бы его не было, элемент управления L a b e l не смог бы

отобразить каждое генерируемое случайное число. Другими словами, именно оператор DoEvents делает возможной анимацию.