
- •Лабораторная работа №1 Интегрированная среда разработки приложений vba
- •Общие положения
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №2 Реализация интерактивного диалога
- •Общие положения
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №3 Работа с массивами данных
- •Общие положения
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №4 Работа с документами Word
- •Общие положения
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Лабораторная работа №5 Программирование панели инструментов
- •Общие положения
- •Порядок выполнения работы
- •Содержание отчета
- •Контрольные вопросы
- •Список использованной литературы
Общие положения
Массив (array) – это набор переменных одного типа, имеющих общее имя. Массивы бывают одномерные (списки данных одного типа) и многомерные, например, двумерный массив – это таблица данных. Массив состоит из пронумерованной последовательности элементов, где каждый номер элемента определяет его местоположение в массиве и называется индексом. Статический массив объявляется с помощью оператора Dim, например Dim Asl (1 To 30) As Integer– объявлен массив Asl для 30 данных целого типа. Для доступа к данным, хранящимся в определенном элементе массива, указывается имя массива и его индекс, например min1= Asl(1) – переменной min1 присваивается значение первого элемента массива Asl.
Если размер массива заранее неизвестен или он меняется в процессе работы программы, используется динамический массив. Объявляется динамический массив без указания его размера в скобках, размер массива указывается в процессе выполнения программы оператором ReDim, например, Dim massiv() As Integer: ReDim massiv(10,2): ReDim Preserve massiv(10,3) – оператор Preserve позволяет переопределить размер массива с сохранением данных, находящихся в нем, причем не допускается менять размерность массива и можно менять размер только последнего измерения.
Для работы с массивами используются функции LBound(Имя массива, [размерность]), UBound(Имя массива, [размерность]2), возвращающие значения соответственно нижней и верхней границ массива. Например, n= UBound(Asl,1) – переменной n присваивается значение 30.
Оператор Erase позволяет очищать элементы статического массива и полностью удалять из оперативной памяти динамический массив.
Для обработки массивов информации широко используются циклы, позволяющие выполнять операторы цикла многократно в зависимости от значения счетчика цикла или от условия цикла. Для организации циклов VBA предоставляет несколько мощных и гибких структур, позволяющие повторять различные действия. Например, фиксированный цикл For… Next или For Each… Next (отличается от For… Next тем, что не имеет параметра Счетчик цикла и выполняется столько раз, сколько имеется элементов в группе – массиве или коллекции объектов). Синтаксис цикла For… Next следующий:
For Счетчик цикла=Начало To Конец [Step Шаг]
[Операторы]
[Exit For]
[Операторы]
Next [Счетчик цикла]
Пример цикла для ввода слов в массив Sl с клавиатуры представлен на рисунке 3.1.
For Isl = 1 To 10
Sl(Isl) = InputBox("Введите слово", "Заполнение массива")
Next Isl
Рисунок 3.1 – Фрагмент программы для ввода информации в массив
Кроме фиксированного цикла в VBA имеется ряд циклов, выход из которых осуществляется при заданном условии. Например, цикл Do While условие … Loop – выполняется до тех пор, пока условие равно True, а цикл Do Until условие … Loop - – выполняется до тех пор, пока условие не равно True. Подробнее о циклах можно узнать в справке VBA и в [1,3,4].
Заполнение массивов информацией возможно вводом значений с клавиатуры, например, используя функцию InputBox (см. рисунок 3.1) или с помощью оператора присваивания. Например, чтобы заполнить массив целочисленной последовательностью случайных чисел из интервала от 0 до 30, можно воспользоваться функцией генератора случайных чисел Rnd и функцией выделения целой части числа Int. Тогда элемент массива Asl будет равен: Asl(Isl) = Int(Rnd * 30).
Для отображения содержимого массива или результатов работы программы можно использовать окно сообщений (функцию MsgBox). При выводе в окно сообщений элементов массива, их предварительно необходимо сложить в переменную строкового типа. Фрагмент программы для сложения элементов массива строкового типа приведен на рисунке 3.2.
str_msg = " "
For Isl = 1 To 10
str_msg = str_msg & Sl(Isl) & ", "
Next Isl
MsgBox "Введенные слова" & str_msg
Рисунок 3.2 – Фрагмент программы для вывода информации
При обработке информации часто используются операции выбора. Для обеспечения «ветвления» в программе в зависимости от значений условий используются операторы If…Then и If…Then…Else для однострочной конструкции операторов и If…Then…Else…End If – для многострочного расположения операторов. Синтаксис If…Then…Else…End If:
If Условие Then
[Операторы]
[ElseIf Условие-n Then
[Операторы_elseIf] …
[Else
[Операторы_else] ]
End If
Для выполнения выбора из нескольких возможных ветвей кода программы используется оператор Select Case. Синтаксис Select Case:
Select Case выражение
[Case критерий_1
[Операторы для критерия_1] ]…
[Case критерий_n
[Операторы для критерия_n] ]
[Case Else
[Операторы_else] ]
End Select
Пример использования оператора Select Case для определения интервала введенного числа приведен на рисунке 3.3.
number = CInt(InputBox("Введите целое число от 1 до 30"))
Select Case number
Case 1 To 10: MsgBox "Число в интервале от 1 до 10"
Case 11 To 20: MsgBox "Число в интервале от 11 до 20"
Case 21 To 30: MsgBox "Число в интервале от 21 до 30"
Case Else: MsgBox "Другие значения"
End Select
Рисунок 3.2 – Фрагмент программы для выбора и вывода информации