ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


Объявление объектных переменных

 

В дополнение к типам Byte, Integer, Long, Single, Double и String VBA также имеет тип Object. Переменные или выражения типа Object ссылаются на объект VBA или на объект, принадлежащий host-приложению, такой как Excel-объекты Workbook, Worksheet и Range или Word-объекты Document, Range, Paragraph.

Как и в случае с другими типами VBA, можно объявлять переменные в мо­дулях, процедурах и функциях с определенным типом Object, что показано в следующем операторе:

Dim myObject As Object

Если переменная типа Object используется для некоторых специфических типов объектов, можно также объявлять объектную переменную для этого специфического типа объекта:

Dim InstBook As Workbook

Объектную переменную InstBook, создаваемую этим оператором Dim, можно использовать только для сохранения ссылок на объекты Workbook. При попытке присвоить переменной InstBook ссылку на объект Range или Worksheet VBA отображает сообщение об ошибке несовпадения типов.

59. Объект в выражениях

Объектное выражение – это выражение VBA, которое определяет отдельный объект. Все объектные выражения должны вычисляться до единственной объектной ссылки (ссылки на объект); объектные выражения используются с единственной целью – создание ссылок на специфические объекты в программах VBA.

Объектное выражение может состоять из объектных переменных, объектных ссылок или объектного метода или свойства, которое возвращает объект:

Application Имя объекта: ссылается на объект приложения
Application.ActiveSheet Объектное свойство, которое возвращает ссылку на объект: активный лист
Application.Workbooks Объектный метод, который возвращает коллекцию объектов: все открытые рабочие книги
ABook Объектная переменная: инициализированная в операторе Set, ссылается на объект

 

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

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

Оператор Set имеет следующий синтаксис:

 

Set Var = Object

Var – это любая объектная переменная или переменная типа Variant;

Object – любая допустимая объектная ссылка; это может быть другая объектная переменная или объектное выражение.

Если Var – переменная, объявленная с каким-либо определенным типом (например, Range или Workbook), этот тип должен быть совместим с объектом, на который ссылается Object.

Dim InstSheet As Worksheet

Set InstSheet = Application.ActiveSheet

Чтобы задать отдельный объект в выражении или объектную переменную для ссылки на этот объект, используются методы и свойства, возвращающие объекты, такие как свойства ActiveWorkbook и ActiveSheet объекта Application или метод Cells объекта Worksheet (в Excel).

Хотя стандартные операторы сравнения (<, <=, >, >=, о, =) не являются значимыми при использовании с объектами, VBA предоставляет один опера­тор сравнения, предназначенный исключительно для использования с объектными выражениями и переменными – оператор Is:

Objectl Is Object2

Object1 и Object2– любые допустимые объектные ссылки. Оператор Is используется для определения того, обозначают ли две объектные ссылки один и тот же объект. Результат операции сравнения Is равен True, если объектные ссылки являются одними и теми же, иначе – False.

 

ФОРМЫ VBA

 

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

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

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

 

61. Пользовательская форма UserForm

Пользовательская форма 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 выведет форму режиме запуска и все ее элементы управления будут активными.

 

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

 

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти