Инф VBA
.pdf60
проекта. Вернуться к редактированию формы можно, просто перейдя к объекту UserForm в окне проекта.
3. Toolbox — панель инструментов управления. Из него можно добавить элементы управления в форму или в документ. При создании экранной формы панель инструментов отображается автоматически
(для вывода этой панели в меню редактора VBA выберите команду
Вид → Панель элементов (View → Toolbox) или щелкните по кнопке
на панели инструментов).
4.Properties — Окно свойств. Через него можно просмотреть свойства всех объектов проекта. Для отображения окна свойств выберите команду Вид → Окно Свойств (View → Properties Window) или нажмите клавишу <F4>, или инструмент на панели инструментов.
5.Окно модуля (Code) — окно программного кода. При открытии программного модуля открывается автоматически. В проекте автоматически создаётся модуль для каждого рабочего листа и для всей рабочей книги. Кроме того, модули создаются для каждой пользовательской формы, макросов и классов. Чтобы добавить стандартный модуль в проект VBA:
•Выберите проект, в который требуется добавить модуль, в окне проектов.
•Выберите в меню редактора VBA команду Вставка → Модуль
(Insert → Module). Выводится пустое окно модуля.
•Выведите окно свойств, нажав клавишу <F4>, а затем задайте имя
модуля (свойство Name в окне свойств).
После вставки модуля в проекте также появится новый объект, который отобразится в окне проекта.
6. Object Browser — обозреватель объектов.
61
7.Watch — окно контролируемых выражений. Используется во время отладки программы.
7.3 Объекты. Свойства. Методы. События
Объектно-ориентированный подход программирования использует следующие базовые понятия: объект, свойства объекта, метод обработки.
Объект в VBA – это то, чем управляют с помощью программы
(например, рабочая книга, рабочий лист, ячейка таблицы, кнопка, текстовое поле и т.д.).
Свойство – это характеристика объекта, его параметр.
Существует определенный формат программного кода, задающего установку свойства:
Объект. Свойство = Значение Установка значений свойств – это один из способов управления
объектами.
Пример 1. Следующий пример показывает, как можно изменить текст в строке заголовка окна приложения посредством установки нового значения свойству
Caption объекта Application:
Application.Caption = “Установка нового заголовка” Различные типы объектов могут иметь различные методы.
Методы – это команды, с помощью которых выполняются некоторые преобразования объектов. Объект может обладать набором заранее определенных встроенных методов обработки, либо созданных пользователем или заимствованных в стандартных библиотеках.
Синтаксис вызова метода объекта:
Объект. Метод [Аргументы]
Пример 2. Пример применения стандартного метода Show (показать) к объекту userform (Форма Пользователя) :
Userform 1. Show
62
В результате применения этого метода Форма Пользователя будет выведена на активный рабочий лист текущей книги Excel.
Объекты могут реагировать на события – действия пользователя или другие внешние действия, например, щелчок по кнопке, изменение текста, нажатие клавиши и др. Событие представляет собой действие, распознаваемое объектом, для которого можно запрограммировать отклик.
7.4 Процедуры VBA
Под процедурой будем понимать последовательность совместно выполняемых операторов, имеющую имя. Классификация процедур VBA:
Процедуры
Подпрограммы |
|
Свойства |
|
Функции |
(Sub) |
|
(Property) |
|
(Function) |
|
|
|
|
|
Общие процедуры |
|
Процедуры |
|
Встроенные |
|
Определяемые |
|
Функции |
(General procedures) |
|
обработки событий |
|
|
|
|
|
модулей |
|
|
(event procedures) |
|
|
|
|
|
классов |
|
|
|
|
|
|
|
|
|
Рис.11
Процедуры-подпрограммы (Sub)
Синтаксис процедуры в упрощенной форме имеет вид:
[ Private | Public ] Sub <ИмяПр> ([ByVal <входные параметры>As <тип>,
ByRef <выходные параметры> AS <тип>])
< операторы >
End Sub
Здесь квадратные скобки указывают на необязательный параметр,
вертикальная черта – на варианты параметров, выбираемых пользователем. Так,
элемент описания Private указывает, что рассматриваемая процедура доступна только из программы и процедур только того модуля, в котором она описана.
63
Элемент описания Public указывает на то, что рассматриваемая процедура доступна для всех программ и процедур во всех модулях.
Входные параметры могут быть либо постоянными, либо именными постоянными, либо переменными, либо выражениями. Выходные параметры,
описанные с ключевым словом ByRef, должны быть только переменными.
После их вычисления в процедуре их значения передаются в вызывающую программу. Вызов процедуры из вызывающей программы осуществляется с помощью оператора
Call < имя процедуры > ( фактические переменные )
Допускается и бесскобочная запись оператора вызова (при этом ключевое слово Call – имя оператора – не используется).
Процедуры обработки событий
Процедуры обработки событий связаны с конкретными объектами и событиями и выполняются, когда эти события происходят. Имя такой процедуры состоит из имени объекта и события, которые объединяются символом подчеркивания. Процедуры обработки событий имеют синтаксис:
Private Sub ИмяОбъекта_Событие( )
<операторы>
End Sub
Объединяет общие процедуры и процедуры-события то, что в их определениях используется ключевое слово Sub. Принципиальное отличие общей процедуры от процедуры-события состоит в том, что для общей процедуры пользователю нужно придумать имя, а имя процедуры-события создаёт сама система VBA.
Процедуры-свойства (Property)
Данный тип процедур применяется для установки или получения значения пользовательских свойств форм и модулей.
Процедуры-функции (Function)
64
Подпрограмма-функция – это подпрограмма, результат которой есть единственное значение, присваиваемое имени этой функции. Среди процедур-
функций различают встроенные, определяемые и функции модулей классов.
Определяемая подпрограмма-функция оформляется в следующем виде:
[Public | Private] Function < ИмяФункции> (список) As < тип результата >
<операторы >
<ИмяФункции > = < выражение >
End Function
Функция не вызывается, подобно процедуре, из какого-нибудь места программы, а включается в состав выражения, значение которого как-то используется в том или ином месте программы. При этом говорят, что функция возвращает своё значение.
Создание процедур и функций в проекте VBA
Для создания процедуры или функции пользователя нужно выполнить следующие действия:
1.Если в проекте нет модуля, то необходимо создать его, выполнив команду меню редактора VBA: Вставка (Insert) → Модуль (Module);
2.Выполнить команду меню редактора VBA: Вставка (Insert) → Процедура
(Procedure);
3.В открывшемся диалоговом окне ввести имя процедуры, выбрать тип
(Sub – подпрограмма, Function –функция), определить уровень доступа.
Рис. 12
65
4.Нажать OK.
5.После выполнения этих действий в окне модуля появится заготовка процедуры:
Public Sub Prigram1()
End Sub
6.Ввести список параметров процедуры и их типов данных, а для функции также указать тип возвращаемого функцией значения.
7.Внутри необходимо поместить код тела процедуры;
7.5Виды и типы данных
Данные – это информация, хранящаяся в ЭВМ и представленная в форме, которая обеспечивает возможность ее хранения, обработки и передачи.
Для обработки в ЭВМ данные представляются в виде величин – элементов данных.
Все данные можно разделить на константы и переменные.
Константа (constant) – величина, значение которой постоянно и не изменяется при выполнении программы.
Переменная (variable) – некоторая величина, которая может изменяться,
принимая в процессе выполнения программы различные значения.
Каждая величина должна быть объявлена или описана, т.е. указаны ее
имя и тип.
Каждой переменной и константе в программе необходимо дать имя или
идентификатор.
Правила использования идентификаторов:
•имя или идентификатор – это последовательность, содержащая латинские буквы, цифры, начинающаяся с буквы;
•идентификатор может содержать не более 255 символов, но различаются первые 31 символов;
66
•в качестве идентификаторов нельзя использовать зарезервированные слова;
•не допускается использовать в идентификаторах пробел, точку,
разделительные символы, знаки операций, а также специальные символы.
Тип переменной определяет:
•размер памяти компьютера, необходимый для ее внутреннего представления;
•возможные значения переменной;
•операции, которые могут выполняться над переменной.
Основные (встроенные) типы данных
Табл. 2
Тип |
Хранимая |
Занимаемая |
Диапазон |
|
информация |
память (в |
значений |
|
|
байтах) |
|
|
|
|
|
boolean |
Логические |
2 |
0 -FALSE, |
|
значения |
|
1 - TRUE |
|
|
|
|
byte |
Целые числа |
1 |
0…255 |
|
|
|
|
integer |
Целые числа |
2 |
-32768…32767 |
|
|
|
|
long |
Длинные целые |
4 |
-/+2.1Е9 |
|
числа |
|
|
|
|
|
|
decimal |
Десятичное число |
14 |
Целое 29 знаков |
|
|
|
Вещественное – 27 |
|
|
|
знаков после запятой |
|
|
|
|
single |
Вещественные |
4 |
-3.4Е38…-1.4Е-45 |
|
одинарной |
|
1.4Е-45…3.4Е38 |
|
точности |
|
|
|
|
|
|
double |
Вещественные |
8 |
-1.7Е308…-4.9Е-324 |
|
двойной точности |
|
4.9Е-324…1.7Е308 |
|
|
|
|
currency |
Денежные |
8 |
-922337203685477.5808… |
|
|
|
|
67
Тип |
Хранимая |
Занимаемая |
Диапазон |
|
информация |
память (в |
значений |
|
|
байтах) |
|
|
|
|
|
|
единицы |
|
+922337203685477.5808 |
|
|
|
|
string |
Текстовая |
Количество |
Количество символов |
|
информация (строка |
символов + |
<=2000000000 |
|
переменной длины) |
10 |
|
|
|
|
|
|
Текстовая |
|
|
String*n |
информация (строка |
Количество |
n<=65400 |
|
фиксированной |
символов |
|
|
длины |
|
|
|
|
|
|
date |
Информация о дате |
8 |
От 1 января 1000 г. до |
|
и времени |
|
31 декабря 9999 г. |
|
|
|
|
object |
Рисунок или ссылка |
|
|
|
на любой другой |
|
|
|
объект |
|
|
|
|
|
|
variant |
Значения любого из |
Не менее 16 |
Любое числовое или |
|
перечисленных |
|
строковое значение |
|
типов |
|
|
|
|
|
|
7.6 Описание переменных и констант
Объявление переменных можно осуществлять на двух уровнях – на уровне процедуры (т.е. только в процедуре, в которой они объявлены) и на уровне модулей (т.е. только в процедурах модуля, в котором они объявлены, но не в других модулях проекта).
Область программы, в которой может быть использована переменная,
называется областью видимости переменной.
68
Декларация переменных может быть явной или неявной. Для явного определения переменных существует два способа. Первый предпочтительный способ, предполагает использование следующего синтаксиса:
[Static | Private | Public] Dim ИмяПеременной [ As Тип]
Dim — ключевое слово, которое сообщает Visual Basic, что декларируется переменная и резервируется область памяти для ее хранения;
ИмяПеременной — имя объявляемой переменной
As — ключевое слово, которое сообщает Visual Basic, что определяется тип данных для переменной;
Тип — тип данных для объявляемой переменной;
Область видимости переменной задается при ее объявлении одним из ключевых слов:
Private – внутренняя переменная;
Public –глобальная переменная на уровне приложения и доступна из всех
его модулей;
Static – для объявления статических переменных, т.е. при выходе из процедуры их значения сохраняются, хотя являются недоступными, пока процедура не будет вызвана вновь.
Область видимости переменной можно не указывать. Тогда переменная,
объявленная внутри процедуры, будет доступна только этой процедуре;
переменная, объявленная вне процедур, будет доступна всему модулю.
Примеры:
Public DIM y AS string*20
Private DIM a, b, c AS integer
DIM x AS integer, s AS long
Другим способом явного объявления переменных является указание типа с помощью суффикса – специального символа в конце имени. В этом случае использование ключевого слова As не требуется:
[Static/Private/Public] DIM <ИмяПеременнойСуффикс>
69
Таблица типов переменных и соответствующих им суффиксов.
Табл. 3
Тип переменной |
Суффикс |
Integer |
% |
Long |
& |
Single |
! |
Double |
# |
Currency |
@ |
String |
$ |
|
|
Тип переменной |
Суффикс |
Byte |
Нет |
|
|
Boolean |
Нет |
Date |
Нет |
Object |
Нет |
Variant |
Нет |
|
|
Примеры:
DIM Fam$
Static N%
Хороший стиль программирования предполагает использование явного объявления переменных.
Перейдем к описанию констант. Различают именованные и неименованные константы.
Именованные константы должны быть описаны в программе в разделе описания. Обращение к ним в программе осуществляется по имени:
[Public/Private] Const <ИмяКонстанты> [As <тип>]=<выражение>
Пример:
Const Pi As Single = 3.1415
Однажды определив константу, ее нельзя будет случайно изменить.
Отметим, что редактор VBA обладает некоторым «интеллектом». Так,
при написании служебных слов появляется подсказка в виде окна с различными вариантами возможных конструкций. Например, после написания слова As
выпадает список допустимых значений, из которого пользователь может выбрать необходимый ему тип переменной.
Неименованная константа (литерал) представляет собой значение константы, записанное непосредственно в операторе программы.