Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по VBA.doc
Скачиваний:
2
Добавлен:
01.03.2025
Размер:
2.47 Mб
Скачать

Контрольные вопросы.

  1. Цикл Do…Loop. Варианты синтаксиса.

  2. Прерывание пользователем работы макроса.

  3. Безусловный выход из цикла.

  4. Цикл While…Wend.

  5. Цикл 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 = "Петров"