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

макросы-2012

.pdf
Скачиваний:
13
Добавлен:
13.02.2015
Размер:
973.82 Кб
Скачать

объекта на произошедшее событие.

В языке VBA для каждого объекта определен набор стандартных событий.

Стандартные события для листов рабочих книг: двойной щелчок мышью

(BeforDoubleClick), щелчок правой кнопкой мыши (BeforRightClick).

Если пользователь нажимает на кнопку, то на это событие должен быть отклик, т.е. выполнение какой-либо программы. Такая программа называется

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

которые являются важными с точки зрения функционирования программы.

Синтаксис записи процедуры обработки событий:

Sub Объект(1)_Событие()

Объект(2).Свойство=ЗначениеСвойства Объект(3).Метод

End Sub

Признак начала любой процедуры обработки событий на языке Visual Basic начинается словом Sub и заканчивается – End Sub.

3. ПЕРЕМЕННЫЕ И КОНСТАНТЫ

3.1 Модуль для кода VBA

Код VBA «находится» в модуле. Модуль состоит из процедур. Каждая содержащаяся в модуле процедура является либо процедуройфункцией, либо процедурой-подпрограммой.

Модуль – совокупность объявлений (описательная часть) и процедур,

хранящихся как единое целое.

Процедура – любая совокупность кода VBA, рассматриваемая как единое целое. Как правило, процедура состоит из операторов, выполняющих какую-

либо задачу или вычисляющих значение. Каждая процедура идентифицируется

11

своим уникальным именем. Часто выполнение процедуры является реакцией на какое-либо событие. В этом случае говорят, что процедура обрабатывает событие. Чтобы узнать, что это за событие, надо посмотреть на имя процедуры. Имя процедуры состоит из названия объекта, CommandButton1

(кнопка), и события, Click (щелчок), которое отделяется от названия объекта символом подчеркивания.

Создание процедур

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

Для любого создаваемого приложения надо создать свой модуль.

Приложение может содержать несколько модулей, но это не обязательно.

Рассмотрим на примере процедуру, которая будет выводить на экран окно сообщения.

Технология выполнения

1.Откройте новую рабочую книгу.

2.Выполните последовательность Разработчик → Код → Visual Basic.

Откроется окно редактора Visual Basic.

3. В левой части окна редактора расположено окно проектов Project Explorer. Откройте проект VBAProject (Книга1) и вызовите КЗМ элемента ЭтаКнига. В контекстном меню выберите команду Insert → Module (Вставка

→ Модуль). В результате будет добавлен новый модуль (рис. 1)

12

Рисунок 1 - Окно проекта

4. Выполните команду Insert → Procedure (Вставка → Процедура).

Откроется диалоговое окно Add Procedure (Добавить процедуру) (рис. 2).

Рисунок 2 - Диалоговое окно создания подпрограммы

5. Введите имя процедуры, например МояПерваяПроцедура. В блоке

Type (Тип ) установите переключатель Sub (Подпрограмма). Новая процедура будет добавлена в модуль (рис. 3).

13

Рисунок 3 - Новая процедура

6. В пустой строке находится текстовый курсор, предлагая начать ввод кода процедуры. Нажмите клавишу <Tab> и введите следующий текст:

MsgBox«Я изучаю VBA»

7. Завершенная процедура показана на (рис. 4).

Рисунок 4 - Ваша первая процедура

VBA требует выполнения определенных правил для имен процедур.

1.Первые три символа имени должны быть буквами.

2.Имя может содержать буквы, цифры и знаки подчеркивания.

3.Имя не может содержать пробелы, точки, запятые, восклицательные знаки и символы @, &, $, #.

4.Имя может содержать до 255 символов.

Выполнение процедуры

После создания процедуры Вы можете ее сразу выполнить одним из

способов. Можно использовать команду Run → Run Sub/UserForm

14

(Выполнить → Выполнить подпрограмму/экранную форму) или активизировать пиктограмму Run Sub/UserForm на стандартной панели инструментов, или нажать клавишу <F5>.

8. Выполните, созданную Вами процедуру одним из способов. В

результате на рабочем листе Excel отобразится окно сообщения (рис. 5).

Рисунок 5 - Выполненная процедура

9. Щелкнув по кнопке ОК, Вы вернетесь в окно редактора Visual Basic. 10.Сохранение процедуры происходит при сохранении рабочей книги,

где находится процедура.

3.2 Переменные

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

Технология выполнения

1. Откройте рабочую книгу, созданную при выполнении задания из предыдущей темы. Создайте в Модуле1 новую процедуру с именем

«Знакомство».

2.Введите следующий текст процедуры: InputBox «Введите Ваше имя»

3.Активизируйте одним из способов выполнение процедуры.

4.Введите свое имя и нажмите ОК. Процедура закончится.

Где хранится Ваше имя, как его найти и использовать дальше в программе. Переменная необходима для того, чтобы сохранить все, что вводит пользователь.

Типы данных

Тип данных переменных показывает, данные какого типа позволяет

15

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

В таблице 1 приведен список типов данных, также в ней содержится информация о размере данных, т.е. об объеме памяти, выделяемом для хранения данных определенного типа.

Таблица 1 Диапазоны значений типов данных

Тип

Объем памяти (байт)

Диапазон значений

Byte (байт)

1 байт

Целые числа

от

0

до

255.

 

 

 

 

 

 

 

 

 

 

Integer (целое)

2 байта

От –32768 до 32767.

 

 

 

Для

отрицательных

Single (одинарной

 

значений от –3,4Е38 до –

4 байта

1,4Е45.

 

 

 

Для

точности)

 

 

 

 

положительных

-

от

 

 

 

 

1,4Е-45 до 3,4Е38.

 

 

Long (длинное целое)

 

Целые

числа

двойной

4 байт

длины от –2147483648 до

 

 

2147483647.

 

 

 

Double (двойной

 

Для отрицательных от –

8 байт

1,79Е308

до –4,94Е-342.

точности)

Для полож. – от 4,94Е-

 

 

 

324 до 1079Е308.

 

 

Boolean (логический)

2 байта

Истина (Тrue)

или ложь

(False).

 

 

 

 

 

 

 

 

 

 

 

 

От

 

 

 

Currency (денежный)

8 байт

922337203685477,5808

до

 

 

 

 

 

 

 

 

 

 

 

 

922337203685477,5807.

Date (дата и время)

8 байт

От 1 января 100г. до 31

декабря 9999г.

 

 

 

 

 

 

 

 

String (строка)

1 байт на каждый символ

От 0 до 2 млрд. символов

Variant (универсальный

 

Любое

 

числовое

16 байт

значение

из

диапазона

числовой)

 

Double.

 

 

 

 

 

 

 

 

 

 

16

Variant (универсальный

22 байта + 1 байт на

Тот же диапазон, что и

для строкового типа с

числовой)

каждый символ

переменной длиной.

 

 

Описание данных в VBA начинается с оператора DIM.

Имя переменной должно начинаться с буквы и может содержать буквы,

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

восклицательный знак и символы @, &, $, #. Имя может состоять не более чем из 255 символов.

Применение в процедуре типа данных продемонстрируем на предыдущем примере.

5. В этом же модуле создадим еще одну новую процедуру Знакомство1.

Введем следующий текст процедуры:

Sub Знакомство1() Dim Имя As String

Имя = InputBox("Введите ваше имя: ") MsgBox "Привет, " & Имя

End Sub

6. Запустите процедуру на выполнение. На экране Excel появится окно ввода (рис. 6)

Рисунок 6 - Выполнение процедуры Знакомство1

7. Введите имя и нажмите ОК. Окно ввода закроется и на экране появится окно сообщения, содержащее введенное имя (рис. 7)

Рисунок 7-Окно сообщения использует значение переменной, содержащее имя

17

8. Щелкнув на кнопке ОК, Вы вернетесь в редактор Visual Basic.

Сохраните работу в том же файле.

Если не указывать тип переменной в операторе Dim, в этом случае VBA

по умолчанию присвоит тип данных Variant. С одной стороны это удобно, но Вы должны определять тип данных по нескольким причинам:

из экономии ресурсов памяти. Ни один тип не требует 16 или 22

байтов для сохранения значений переменных;

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

от выбранного типа данных зависит время выполнения процедур VBA.

Пример

Dim A as Integer, B as Byte, С as String

Здесь переменная А определена как целое число, которое должно быть не меньше -32768 и не больше 32767; переменная В определена как целое положительное число значение которого не может превышать числа 255; а в переменная С может содержать текстовую информацию (см. табл. 1).

3.3 Использование констант

Как отмечалось ранее, переменные используются для хранения данных,

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

Const ИМЯ_КОНСТАНТЫ As тип_данных = значение

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

Пример объявления константы: Const СРОК_ОБУЧЕНИЯ As Byte = 5

18

Область видимости переменных и констант

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

Область объявления переменных определяет область их видимости. Так,

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

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

Существует и третий уровень видимости, который называется глобальным (public).

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

что они находятся в памяти компьютера все время выполнения приложения и,

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

Public имя_переменной As тип_данных

Для объявления глобальной константы применяется оператор вида

Public Const ИМЯ_КОНСТАНТЫ тип_данных =значение

Глобальные переменные и константы следует объявлять в верхней части модуля и области общих объявлений.

19

4. НЕКОТОРЫЕ ФУНКЦИИ VISUAL BASIC for APPLICATION

4.1 Функция MsgBox

Функция MsgBox служит для организации диалоговых окон, содержащих какие-либо сообщения. После появления на экране окно сообщений ждет, пока пользователь щелкнет по одной из кнопок, присутствующих в окне.

Синтаксис функции Окна ввода MsgBox:

MsgBox(Текст[,Кнопки] [,Заголовок]), где

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

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

Кнопки - это аргумент, который является целым числом и может быть представлен как сумма двух слагаемых: Кнопки=Опция1+Опция2. Если не указан аргумент Кнопки, VBA предполагает, что в диалоговом окне сообщения присутствует только кнопка Ок. Аргумент Кнопки позволяет управлять следующими параметрами окна сообщения:

количеством кнопок в окне;

типом кнопок и их размещением в окне;

пиктограммой, отображаемой в окне.

Значение Опция1(табл.2) устанавливает число и тип кнопок в Окне сообщения.

Таблица 2 Типы кнопок

Значения Опция1

Набор кнопок

0

ОК

1

ОК, Отмена

2

Стоп, Повтор, Пропустить

 

 

20

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]