- •Методические указания
- •Среде Microsoft excel
- •Лабораторная работа №1. Введение в Visual Basic for Applicрations. Структура программы. Типы данных.
- •Р ис. 1.1 Редактор vba
- •Практическое упражнение.
- •Контрольные вопросы.
- •Лабораторная работа №2. Инструкции управления порядком выполнения команд.
- •Инструкция If…Then…Else
- •Инструкция Select Case
- •Безусловный переход с помощью инструкции GoTo
- •Практическое упражнение.
- •Безусловный выход из цикла.
- •Цикл While…Wend
- •Цикл For…Next
- •Практическое упражнение.
- •Контрольные вопросы.
- •Лабораторная работа №4. Массивы. Задание собственных типов данных.
- •Многомерные массивы
- •Задание собственных типов данных
- •Область определения и время жизни переменных
- •Практическое упражнение.
- •Использование окна свойств объекта.
- •Создание форм.
- •Размещение элементов управления в форме
- •Практическое упражнение.
- •Контрольные вопросы.
- •Лабораторная работа №6. Модель объектов Excel.
- •Использование объекта Application.
- •Использование семейства Workbooks.
- •Использование семейства Worksheets.
- •Использование объекта Range.
- •Практическое упражнение.
- •Контрольные вопросы.
Контрольные вопросы.
Цикл Do…Loop. Варианты синтаксиса.
Прерывание пользователем работы макроса.
Безусловный выход из цикла.
Цикл While…Wend.
Цикл For…Next.
Лабораторная работа №4. Массивы. Задание собственных типов данных.
Цель: Научиться использовать массивы для работы с большим объемом однородной информации
Иногда требуется обработать большой объем данных определенного типа, например, список имен служащих. Неудобно описывать отдельную переменную для каждой единицы информации, особенно, если число таких единиц велико или заранее неизвестно их количество.
Решение данной проблемы состоит в использовании массивов. Массив - это набор элементов с определенным типом данных, каждый из которых имеет свой порядковый номер. Порядковый номер называют индексом элемента в массиве.
Чтобы выделить память для хранения элементов, необходимо описать массив. Единственным отличием от простого описания переменной является использование параметра индекс, указывающего на число элементов в массиве.
Рассмотрим следующее описание:
Dim EmployeeNames (4) As String
Число элементов в описанном массиве равно 5, т. к. если иное специально не оговаривается, то первый элемент массива имеет нулевой индекс. Таким образом, число элементов массива на единицу больше максимального индекса.
Описав массив, можно присвоить значения его элементам:
EmployeeNames (0) = "Иван Петров"
EmployeeNames (1) = "Сергей Власенко"
EmployeeNames (2) = "Андрей Куцко"
EmployeeNames (3) = "Елена Барыкина"
EmployeeNames (4) = "Дмитрий Лившиц"
Присвоив значения элементам массива, можно использовать их. Попробуйте, например, выполнить следующую программу:
Sub Массив()
Dim EmployeeNames(4) As String
EmployeeNames(0) = "Иван Петров"
EmployeeNames(1) = "Сергей Власенко"
EmployeeNames(2) = "Андрей Куцко"
EmployeeNames(3) = "Елена Барыкина"
EmployeeNames(4) = "Дмитрий Лившиц"
For Number = 0 To 4
MsgBox ("Доброе утро, " & EmployeeNames(Number))
Next Number
End Sub
Многомерные массивы
В VBA можно создавать многомерные массивы. Чтобы описать, например, двумерный массив, необходимо задать в инструкции Dim два параметра индекс. Приведем инструкцию, которая описывает таблицу из 10 строк и 15 столбцов:
Dim Location (9,14) As Integer
Более того, имеется возможность создать массив с очень большой размерностью, указав в описании требуемое число индексов. Однако необходимо учитывать, что затраты памяти увеличиваются очень быстро по мере задания новых индексов.
Элементы многомерных массивов получают значения и используются практически так же, как элементы одномерных:
Location (8,7) = 259
Amount = Location (8,7)
MsgBox (Amount)
Задание собственных типов данных
Инструкция Type позволяет описать собственные типы данных, созданные на основе стандартных. С помощью определенных пользователем типов можно объявить переменные, которые содержат включающую несколько разнородных элементов информацию.
Синтаксис инструкции Type выглядит следующим образом:
[Private | Public] Type имяПеременной
имяЭлемента [([индексы])] As тип
[имяЭлемента [([индексы])] As тип]
…
End Type
Параметр имяПеременной - имя, которое требуется присвоить определяемому типу. В описании можно указать произвольное число элементов любого типа данных, необязательно одинакового, включая массивы и другие заданные пользователем типы.
Предположим, например, что требуется описать переменную, в которой хранится информация о некотором служащем. Конечно, для этого можно использовать и несколько переменных. Однако создавая собственный тип данных, можно хранить разрозненные данные в одной переменной:
Type Employee
FirstName As String * 15
LastName As String *15
Phone As String * 13
Salary As Single
DateHired As Date
End Type
После описания нового типа требуется явно объявить одну или несколько переменных этого типа. Чтобы описать переменную, подставьте в инструкции Dim имя заданного типа в качестве параметра тип, например:
Dim NewEmployee As Employee
Теперь после описания переменной можно присвоить значения ее элементам и использовать эти значения. Для доступа к значениям требуется указать название переменной, точку, а затем имя элемента, например:
NewEmployee.FirstName = "Иван"
NewEmployee.LastName = "Петров"
NewEmployee.Phone = "(212)555-1232"
NewEmployee.Salary = 350
NewEmployee.DateHired = Date
Для использования переменной NewEmployee:
FullName = NewEmployee.FirstName & " " &_ NewEmployee.LastName
Теперь объединим приведенные примеры:
Type Employee
FirstName As String * 15
LastName As String *15
Phone As String * 13
Salary As Single
DateHired As Date
End Type
Sub Sample
NewEmployee.FirstName = "Иван"
NewEmployee.LastName = "Петров"
NewEmployee.Phone = "(212)555-1232"
NewEmployee.Salary = 350
NewEmployee.DateHired = Date
FullName = NewEmployee.FirstName & " " &_ NewEmployee.LastName
End Sub
Кроме того, можно создать массив, содержащий элементы собственного типа. Рассмотрим пример, в котором описывается массив из 10 служащих и заносятся данные в его первый элемент:
Dim AllEmployees (9) As Employee
AllEmployees (0).FirstName = "Иван"
AllEmployees (0).LastName = "Петров"
