Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Инф VBA

.pdf
Скачиваний:
31
Добавлен:
29.03.2016
Размер:
1.88 Mб
Скачать

60

проекта. Вернуться к редактированию формы можно, просто перейдя к объекту 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

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

Неименованная константа (литерал) представляет собой значение константы, записанное непосредственно в операторе программы.