Основные сведения о средствах редактора VBA

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

VBA помогает при описании переменных и объектов, практически исключая возможность возникновения ошибки при условии использования списка допустимых типов данных и объектов. Этот список отображается только тогда, когда установлен флажок Auto List Membersв диалоговом окне Options, вызываемым командой Tools\Options. Если флажок сброшен, то можно вывести список подстановки, используя команды Edit\List Properties/Methodsили Edit\Complete Wordили аналогичные команды в контекстном меню.

VBA позволяет создать мощные приложения, используя большое число встроенных процедур и функций. Процедуры используются для преобразования типов данных, обеспечения доступа к средствам операционной системы, управления внешними устройствами, взаимодействия с пользователем и др. Однако иногда подпрограммы нелегко использовать, т.к. требуется точно знать порядок задания параметров и тип возвращаемого процедурой значения. Редактор VBA упрощает использование процедур в программе, показывая их синтаксис. При вводе имени стандартной функции или подпрограммы он отображает в нужном порядке все требуемые аргументы, а также их тип. При отображении синтаксиса процедуры имена некоторых параметров выводятся жирным шрифтом, а остальные - заключаются в квадратные скобки. Параметры, выделенные жирным шрифтом, являются обязательными, а другие - дополнительными. Для задания автоматического вывода синтаксиса процедур в окне модуля должен быть установлен флажок Auto Quick Info диалогового окна Options.Если флажок сброшен, то для вывода справки по процедуре нужно выделить ее название, щелкнув правой кнопкой мыши, а затем вызвать команду
Edit\Parameter Infoили аналогичную команду из контекстного меню.

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

Функция MsgBox

MsgBox(сообщение[, кнопки][, заголовок][, файл справки, контекст])

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

Функция InputBox

InputBox(сообщение[, заголовок][, умолчание][, Xпоз][, Yпоз][,файл справки, контекст])

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

Условный оператор IF

Для проверки одного условия и выполнения оператора или блока операторов используется оператор IF…THEN. Этот оператор можно использовать с разным синтаксисом: однострочным (линейным) и многострочным (блочным).

а) Однострочный:

If <условие> Then <оператор>

б) блочный:

If <условие> Then

<блок операторов>

End If

Для проверки одного условия и выбора одного из двух блоков операторов используется оператор вида If…Then… Else.

If <условие> Then

<блок операторов1>

Else

<блок операторов2>

End If

Для проверки более одного условия и выполнения одного из нескольких блоков операторов используется оператор вида:

If… Then…ElseIf

If <условие 1> Then

<блок операторов 1>

ElseIf <условие 2> Then

<блок операторов 2>

…………….

ElseIf<условие n> Then

<блок операторов n>

Else

<блок операторов Else>

End If

Оператор выбора SELECT CASE

Используется для проверки одного условия и выполнения одного из нескольких блоков операторов.

Формат записи оператора:

Select Caseпроверяемое выражение

Caseсписок выражений 1

операторы 1

Caseсписок выражений 2

операторы 2

Caseсписок выражений 3

операторы 3

……………………………….

Case Else

операторы группы Else

End Select

Проверяемое выражение вычисляется в начале работы оператора Select Case. Это выражение может возвращать значение любого типа (логическое, числовое, строковое).

Список выражений – одно или несколько выражений, разделенных стандартным символом – разделителем(;).

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

- выражение

- выражение 1 To выражение 2

- Is логический оператор (оператор сравнения) выражение

Например, Is >= 10

Оператор цикла For…Nextимеет две разновидности:

a) For счетчик = начало To конец [Step приращение]

операторы

Next [счетчик]

б) For Each <элемент> In <группа>

операторы

Next [элемент]

Оператор цикла WHILE…WEND

Используется для организации циклов с предусловием и имеет следующий формат:

While <условие продолжения цикла>

операторы тела цикла

Wend

Оператор цикла DO…LOOP

Используется для организации циклов с неопределенным числом повторений (с предусловием и с постусловием).

Этот оператор для организации цикла с предусловием может использоваться в двух модификациях:

а) Do While <условие продолжения цикла>

операторы тела цикла

Loop

б)Do Until <условие прекращения цикла>

операторы тела цикла

Loop

Для организации цикла с постусловием этот оператор также может быть использован в двух модификациях:

в) Do

операторы тела цикла

Loop While <условие продолжения цикла>

г)Do

операторы тела цикла

Loop Until <условие прекращения цикла>

Оператор перехода GoTo

Этот оператор позволяет выполнить безусловный переход к заданной строке активной процедуры.

Формат оператора:

GoToстрока

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

Оператор With для операций с одним объектом.

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

Формат записи оператора:

With объект

[операторы]

End With

Выполнение лабораторной работы

1. Cоздать проект в редакторе VBA. Для этого запустить редактор VBA: выбрать группу Макросы ленты ВИД или нажать комбинацию клавиш <Alt>< F8>. В диалоговом окне Макрос введите имя проекта – Проект и нажмите Создать, при этом откроется окно проекта.

2. Скрыть окно проекта. Нажать кнопку "Закрыть" окна проекта или щелкнуть правой кнопкой мыши по окну проекта, а затем выбрать из контекстного меню команду Hide (Скрыть).

3. Закрепить окно проекта. Для этого щелкнуть правой кнопкой мыши по окну проекта и выбрать из контекстного меню команду Dockable (Закрепить).

4. Переместить закрепленное окно проекта. Для этого перетащить окно, щелкнув по строке заголовка.

5. Проделать все перечисленные в пунктах 2-4 операции с окном свойств (Properties Window).

6. Вывести свойства объекта. Для этого необходимо выбрать объект из списка, расположенного вверху окна свойств, или выбрать объект в окне проекта и, если окно свойств скрыто, вывести его, нажав клавишу <F4>.

7. Изменить значение свойства. Для этого необходимо выбрать требуемое свойство в левом столбце, а затем задать нужную величину в правом столбце. Например, из списка, расположенного вверху окна свойств, выберите объект Лист1 (Лист1), в левом столбце окна свойств выберите свойство Name и в правом столбце задайте новое значение этого свойства Бюджет.

8. Добавить модуль в проект. Для этого:

· в окне проекта необходимо выбрать проект, в который требуется добавить модуль;

· выбрать в меню редактора VBA команду Insert\Module (Вставка\Модуль),после чего выведется пустое окно модуля;

· в окне свойств задать имя модуля (например, Обработка)

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

· дважды щелкните в окне проекта по имени требуемого объекта приложения, который может содержать код (по названию модуля);

· дважды щелкните по форме или любому элементу управления в форме;

· выделите требуемый объект проекта, а затем выберите в окне редактора VBA команду View\Code (Вид\Программа).

10. Добавить процедуру в проект. Для этого:

· открыть окно модуля, в которое требуется добавить процедуру;

· выбрать команду Insert\Procedure (Вставка\Процедура);

· ввести имя процедуры в поле Имя (например, pr);

· выбрать переключатель. Задающий тип добавляемой процедуры: подпрограмма (Sub), функция (Function) или свойство (Property);

· задать личную или общую область определения процедуры, выбрав переключатель Public (Общая) или Private (Личная) соответственно;

· в случае если все локальные переменные являются статическими, установить флажок "Все локальные переменные считать статическими" (All Local variables as Statics);

· нажать кнопку "ОК". В окне модуля выведется пустая процедура с заданным именем.

11. Введите текст процедуры, вычисляющей сумму значений элементов одномерного массива:

Sub pr()

Dim b(10) As Integer

Dim s As Integer

s = 0

For i = 1 To 10

b(i) = InputBox("Введите число")

s = s + Val(b(i))

Next

MsgBox s

End Sub

Написание кода включает в себя описание переменных и объектов, использование процедур. Если VBA определяет, что описывается переменная или объект, то отображается специальное окно, в котором можно выбрать допустимый объект или тип. Например, после ввода: Dim s As редактор отображает список всех известных объектов и типов данных. После вывода списка нужно выбрать требуемый тип (Integer) и нажать клавишу <Enter>. VBA подставляет выделенный элемент в выражение Dim. Аналогичным образом введите еще две следующие процедуры:

Sub pr1()

Dim a As Single

Dim k As String

Dim y As Single

a = InputBox("Введите число")

x = Val(a)

If Val(a) <> 0 Then

y = 150 / x

k = MsgBox(y)

Else

MsgBox ("Деление на ноль")

End If

End Sub

Sub pr2()

Dim a(10) As Single, s As Single, b As Single, n As Boolean

For i = 1 To 10

a(i) = Val(InputBox("Введите число"))

Next

Do

n = False

For i = 1 To 9

If a(i) > a(i + 1) Then

b = a(i): a(i) = a(i + 1): a(i + 1) = b: n = True

End If

Next

Loop While n = True

s = a(1) + a(10)

MsgBox s

End Sub

12. Осуществить поиск процедур в окне модуля. Для этого:

· Чтобы быстро найти процедуру, которая находится в текущем модуле, необходимо выбрать в списке, расположенном в верхнем левом углу окна модуля, элемент (Общая область), а затем выделить название требуемой процедуры в списке, находящемся в правом верхнем углу.

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

· Чтобы быстро найти описание процедуры, нужно щелкнуть правой кнопкой мыши по имени требуемой процедуры в любом месте кода и выбрать команду Object Browser (Описание).

· Чтобы возвратиться в позицию последней правки, нужно щелкнуть правой кнопкой мыши по окну модуля и выбрать из контекстного меню команду Last Position (Вернуться к последней позиции).

13. Задать цвет вывода для отдельных частей программы, для этого:

· Раскрыть вкладку Editor Format (Формат) диалогового окна Options (Параметры).

· Задать тип текста в списке Code Colors (Цветовые коды).

· Выбрать цвет текста и фона в списках Foreground (Текст) и Background (Фон) соответственно. Если требуется использовать индикатор полей, например, для точки останова, выберите индикатор в списке Indicator (Индикатор). Задать шрифт текста и его размер в списках Font (Шрифт) и Size (Размер) соответственно.

· Для сохранения заданного типа текста нажать "ОК".

14. Экспортировать файл, для этого:

· Выбрать экспортируемый компонент в окне проекта (например, Модуль1).

· Выбрать команду File\Export File (Файл/Экспорт файла),в диалоговом окне Export File раскройте нужную папку, введите имя файла и нажмите "ОК".

15. Импортировать файл, для этого:

· Активизировать другое приложение MS Office (например, WORD).

· Выбрать в окне редактора VBA команду File\Import File (Файл/Импорт файла),в диалоговом окне Import File найдите требуемый файл, выделите его, а затем нажмите кнопку "ОК".

16. Выполнить VBA-процедуры из импортированного модуля.

ЛАБОРАТОРНАЯ РАБОТА №2.

Наши рекомендации