Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

События и событийные процедуры

Поиск

ФОРМЫ VBA

 

До сих пор использовались диалоговые окна, которые встроены в VBA, а именно, функции MsgBox и InputBox. Хотя MsgBox и InputBox придают программам гибкость, которой могут обладать только интерактивные программы, их возможности в известной степени ограничены. При разработке более сложных программ, может понадобиться выводить диалоговые окна, позволяющие пользователям программ задавать при помощи одного диалогового окна несколько опций, выбирать пункты из списка или вводить в одном окне несколько значений. Часто возникает необходимость вместо встроенных окон, принадлежащих Excel, использовать диалоговые окна, соз­данные специально для разработанной программы.

VBA позволяет создавать и применять пользовательские диалоговые окна в написанных программах и процедурах при помощи добавления в проект объекта UserForm. Используя формы пользователя VBA (VBA User Forms), можно создавать диалоговые окна для вывода данных или получения значений от пользователя программы именно в том виде, который требуется программе. Например, можно вывести на экран диалоговое окно со списком различных вариантов формата даты и предоставить пользователю возможность выбрать из списка один из форматов.

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

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

Диалоговое окно в VBA создается добавлением в проект объекта UserForm. Объект UserForm – это пустое диалоговое окно. Настройку диалогового окна можно выполнить добавлением к объекту UserForm (обычно называют просто форма) элементов управления. Каждому объекту UserForm присущи определенные свойства, методы и события, которые он наследует от класса объектов UserForm. Каждый объект UserForm включает в себя также модуль класса, в который можно добавлять собственные методы и свойства или код обработки событий формы.

Первый шаг в создании пользовательского диалогового окна состоит в добавлении к проекту новой формы (объекта User Form). Форма содержит рабочую область, в которую можно поместить элементы, необходимые для выполнения некоторого диалога пользователя с приложением.

Для добавления к проекту новой формы надо использовать команду VB-редактоpa Insert ® UserForm (Вставка ® UserForm). Редактор VBA добавляет к текущему проекту новую форму, присваивая ей по умолчанию имя UserFormN и используя ту же систему нумерации, что и для модулей. Редактор VBA выводит новую форму в режиме разработки, как показано на рис. 9.9. В режиме разработки можно добавлять (или удалять) элементы управления к форме, устанавливать свойства формы или ее элементов управления и выполнять другие манипуляции с внешним видом формы в интерактивном режиме. Когда форма выведена и используется как часть выполняющейся программы, она находится в режиме выполнения.

На рис. 9.9 показана добавленная в проект форма UserForm1. Широкая рамка вокруг формы указывает на то, что форма выделена. Сетка из точек наповерхности формы помогает выравнивать и контролировать размеры элементов управления, помещаемых на форму, и появляется только в режиме разработки. Панель элементов является «палитрой», с помощью которой можно выбирать элементы управления и добавлять их к форме

Объект UserForm можно переименовать так же, как стандартный модуль или модуль класса. Для этого в Properties Window (окно свойств) надо редактировать свойство (Name) и Caption этого объекта.

Когда форма выводится на экран в режиме разработки, можно протестовать ее поведение, используя команду Run ® Run Sub/User Form (Запуск ® Запуск подпрограммы/UserForm). После этого редактор VBA выведет форму режиме запуска и все ее элементы управления будут активными.

 

Рис. 9.9. Новая UserForm в режиме разработки

 

Рис. 9.10. Новая UserForm в режиме запуска

 

Свойства объекта UserForm

 

Форма имеет некоторые встроенные свойства, и эти свойства можно устанавливать или программным образом, или в Properties Window (окне свойств) редактора VBA. Строго говоря, данные способы изменения свойств форм не являются эквивалентными. Некоторые из свойств могут быть установлены только посредством Properties Window. Программным способом свойства форм устанавливаются таким же образом, как и свойства других объектов: путем присвоения свойству нового значения. В табл. 9.7 перечислены свойства UserForm, на которые скорее всего, придется ссылаться или изменять их.

 

Таблица 9.7. Наиболее часто используемые свойства объектов UserForm

Свойство

Описание

ActiveControl

Возвращает объектную ссылку на элемент управления, находящийся в фокусе в данный момент. Только для чтения

BackColor

Целое число типа Long определяет цвет фона формы. Самый простой способ установить это свойство – использовать Properties Window; чтобы выбрать желаемый цвет (если необходимо), можно скопировать номер цвета из Properties Window в свою программу

BackColor

Возвращает цвет фона формы

BorderStyle

Устанавливает тип границы

Caption

Текст, выводимый в качестве заголовка формы. Запись/Чтение

Caption

Возвращает текст, отображаемый в строке заголовка формы

Controls

Возвращает коллекцию всех элементов управления формы. Только для чтения

Cycle

Определяет, должно ли нажатие клавиши табуляции вызывать последовательный выбор всех элементов управления во всех группах и на каждой странице многостраничных элементов управления или только в пределах текущей группы или страницы. Может содержать одну из двух встроенных констант: fmCycleAllForms или fmCycleCurrentForm. Чтение/Запись

Enabled

Содержит значение типа Boolean, указывающее, доступна ли форма. Если его значение равно False, ни один из элементов управления формы не доступен. Чтение/Запись

Font

Возвращает ссылку на объект Font, посредством которого можно выбрать параметры шрифта формы или элемента управления

ForeColor

То же самое, что и свойство BackColor, но устанавливает цвет используемый для переднего плана (обычно – это цвет текста) объекта формы

Height И Width

Возвращают высоту и ширину формы в пунктах

Left И Top

Возвращают местоположение верхнего левого угла формы в пунктах

Name

Возвращает имя пользовательской формы

Picture

Указывает рисунок, отображаемый как фон формы

StartUpPosition

Возвращает значение, определяющее расположение формы при ее первом отображении на экране. Допустимые значения:

· Manual (начальное значение не устанавливается),

· CenterOwner (выравнивание по центру объекта, к которому принадлежит форма)

· CenterScreen (выравнивание по центру экрана)

· windows Default (положение верхнего левого угла экрана)

 

Методы объекта UserForm

 

Всякий раз создавая в проекте новый объект UserForm, создается новый подкласс объекта UserForm. Любые процедуры или функции, написанные вами в разделе General (общий) модуля класса, относящегося к форме, становятся дополнительными методами для отдельного подкласса объекта. Можно также создать для формы новые свойства, добавив в ее модуль класса процедуры Property Get и Property Let. Можно также создавать экземпляры подкласса UserForm с помощью оператора Dim и ключевого слова New.

Однако чаще всего манипулируют объектом формы при помощи стандартных методов и свойств класса UserForm и при помощи собственных процедур обработки событий для выбранной формы и ее элементов управления.

В табл. 9.8 перечислены наиболее часто используемые методы для объектов UserForm, которыми можно воспользоваться, и кратко изложены их свойства. Эти методы будут доступны для каждой формы, которая добавляется в проект.

 

Таблица 9.8.Наиболее часто используемые методы объекта UserForm

Метод

Назначение

Copy

Копирует выделенный в элементе управления текст в буфер обмена Windows

Cut

Вырезает выделенный в элементе управления текст и помещает его в буфер обмена Windows

Hide

Закрывает форму. Скрывает UserForm, не выгружая ее из памяти, сохраняя значения элементов управления формы и всех переменных, объявленных в модуле класса формы

Paste

Вставляет содержимое буфера обмена Windows в текущий элемент управления

PrintForm

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

Repaint

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

Show

Выводит форму на экран. Если форма еще не загружена в память, то данный метод сначала ее загружает

 

Синтаксис метода Show

 

FormName.Show

 

В данной синтаксической конструкции FormName может быть любым объектом UserForm текущего проекта. FormName – имя формы в том виде, как оно отображается в Project Explorer. Например, если имеется форма frmInsertFigure, вывести ее на экран можно с помощью оператора:

 

frmlnsertFigure.Show

 

Если форма в данный момент не загружена в память, метод Show загрузит ее и выведет на экран. Если форма уже загружена, метод Show просто выведет ее на экран. В любом случае метод Show выводит форму и затем передает ей управление. Форма будет оставаться на экране до тех пор, пока или не будет выполнен метод Hide объекта User Form, или форма не будет выгружена при помощи оператора Unload.

 

 

Событие – это что-то, что может произойти с диалоговым окном или элементом управления диалогового окна. Типичные примеры событий: щелчок на кнопке, переключателе и т.д. Другие примеры событий: изменение содержимого окна редактирования или выбор элемента списка. Щелчок мышью, нажатие клавиши и действия, внутренние для вашего компьютера, – все они запускают или иными словами влекут за собой события.

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

Такие объекты, как формы и элементы управления приводят в действие некоторые события. Можно написать собственные VBA-процедуры, реагирующие на события. Такие процедуры, называются событийными процедурами или процедурами обработки событий.

Событийные процедуры следует записывать в модуль класса, который является частью UserForm. При этом такие процедуры должны иметь имена в виде ObjectName_EventName, где ObjectName – имя формы или элемента управления, a EventName – имя события, с которым следует работать. Такой формат имени, позволяет VBA сопоставлять заданному событию требуемую процедуру.

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

 

Таблица 9.9. События объектов UserForm

Событие

Синтаксис заголовка процедуры обработки события

Описание

Activate

Private Sub objecf_Activate()

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

Click

Private Sub object_Click(index  As Long)

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

DblClic

Private Sub object_DblClick(index As Long,

ByVal Cancel As

MSForms.ReturnBoolean)

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

Deactivate

Private Sub object_Deactivate()

Инициируется всякий раз, когда форма перестает быть активной

Initialize

Private Sub object_Initialize()

Инициируется всякий раз, когда форма впервые загружается в память посредством выполнения оператора Load или с помощью метода Show. Это событие используется для инициализации элементов управления формы при ее появлении на экране.

Resize

Private Sub UserForm_

Resize()

Инициируется при изменении размеров формы

Terminate

Private Sub object_Terminate()

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

 



Поделиться:


Последнее изменение этой страницы: 2024-06-17; просмотров: 5; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.227.140.152 (0.007 с.)