Основные сведения о средствах редактора 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.