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

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

503

окно приобретает “шарм и очарование”. Пользователь может изменять его размеры, причем пропорционально изменяются размеры элементов управления.

Наиболее сложная задача в процессе создания диалогового окна с изменяемыми раз­ мерами — настройка элементов управления. И если их более трех, задача чрезвычайно усложняется.

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

Каждый элемент управления C om m andB utton в диалоговом окне U s e r Form дол­

жен иметь собственную процедуру обработки событий. Например, если на форме нахо­ дятся два элемента управления C om m andB utton, то необходимо создать как минимум

две процедуры обработки событий.

Private Sub C om m an dB utton l_ C lick()

1

Здесь

находится

код

End Sub

 

 

P rivate Sub C om m andB utton2_C lick()

'

Здесь

находится

код

End Sub

 

 

Другими словами, нельзя настроить макрос так, чтобы он выполнялся после щелчка на любой кнопке Com m andButton. Каждая процедура обработки события C lic k жестко связана с определенным элементом управления Com m andButton. Однако можно заста­

вить каждую процедуру обработки события вызывать другой макрос — при этом следует передать параметр, который будет указывать, на какой из кнопок был выполнен щелчок. В следующих примерах щелчок на одной из кнопок (C om m andB uttonl и Command- Button2) приведет к выполнению одной процедуры B u tto n C lic k . Единственный аргу­ мент сообщает процедуре B u tto n C lic k , на какой из кнопок был сделан щелчок.

Private

Sub C om m andB uttonl_C lick ()

C a ll

B u tto n C lic k (1)

End Sub

 

Private

Sub C om m andB utton2_C lick()

C a ll

B u tto n C lic k (2)

End Sub

 

Если

в диалоговом окне Use г Form находится несколько элементов управления

CommandButton, то создание процедур обработки событий для каждого из элементов

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

В данном разделе описывается способ, который поможет обойти это ограничение. Будет использован модуль класса с целью определения нового класса.

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

Рассматриваемый в этом разделе пример находится на прилагаемом к кни­ ге компакт-диске в файле m u ltip le b u tto n s .xlsm .

Ниже демонстрируется создание примера диалогового окна Use г Form, показанного

на рис. 15.21.

512

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

П одробнее о расш иренной ф орме ввода данны х

Свойства расширенной формы ввода данных описаны в табл. 15.1.

Таблица 15.1. Сравнение расш иренной форя£ы ввода данны х с ф орм ой

ввода данны х Excel

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

 

Форма ввода данных

Обрабатывает любое количество записей и полей

Ограничена 32 полями

Отображаемое диалоговое окно может быть любо-

Размер диалогового окна настраива-

го размера

 

 

ется в зависимости от количества по­

 

 

 

 

лей. Фактически оно может занимать

 

 

 

 

весь экран!

Поля

образуются

элементами

управления

Используются только элементы управ-

InputBox и ComboBox

 

 

ления InputBox

Можно изменять ширину описательных заголовков

Невозможно изменять поля заголовков

столбцов

 

 

столбцов

Можно легко изменять используемый в диалоговых

Изменить язык невозможно

окнах язык (требуется указать пароль VBA)

 

Запись, отображаемая в диалоговом окне, всегда

После выбора записей экран не про-

присутствует на экране и при этом выделена. Бла-

кручивается и запись не выделяется

годаря этому понятно, какая запись выбрана

 

Изначально в диалоговом окне отображается за-

Изначально отображается первая за­

пись, находящаяся в активной ячейке

 

пись в базе данных

После закрытия диалогового окна выбирается те-

После закрытия выделенная область

кущая запись

 

 

не изменяется

Позволяет вставлять новую запись в любом месте Добавляет новые записи только в ко-

базы данных

нец базы данных

Включает кнопку Отменить (Undo) для формы ввода

Включает только кнопку Восстановить

данных, Вставить запись (Insert Record), Удалить за-

(Restore)

пись (Delete Record) и Создать запись (New Record)

 

Критерии поиска находятся на отдельной панели, бла-

Критерии поиска не всегда отобража-

годаря чему вы всегда знаете, что ищете

ются на экране

Поддерживает символы подстановки (*, ? и #)

Форма ввода данных Excel не поддер­

 

живает символы подстановки

Доступен исходный код на языке VBA, поэтому

Форму ввода данных невозможно соз-

форму можно настроить требуемым образом

дать средствами VBA и настроить с

 

помощью VBA

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

Расширенная форма ввода данных (Enhanced Data Form) является коммер­ ческим программным продуктом. Версия этой надстройки для Excel 97 и бо­ лее поздних версий находится на прилагаемом к книге компакт-диске. Этой надстройкой можно пользоваться бесплатно; также можно распространять ее среди друзей и знакомых.

Если вы хотите настроить код или диалоговое окно UserForm, воспользуй­ тесь исходным кодом на языке VBA (по весьма умеренной цене)ГЕго можно найти на веб-сайте h t t p : //sp re a d sh e e tp a g e .

V

Профессиональные мето ды программирования

В этой части...

Глава 16

Разработка утилит Excel с помощью VBA

Глава 17

Работа со сводными таблицами

Глава 18

Управление диаграммами

Глава 19

Концепция событий Excel

Глава 20

Взаимодействие с другими приложениями

Глава 21

Создание и использование надстроек