Типы данных, определяемые пользователем (ОПТ)
Это типы данных структурного вида. Эти типы создаются на основе базовых типов VBA. Возможность создавать свои типы данных полезна в тех случаях, когда программа работает с группой элементов различного базового типа, но связанных между собой по смыслу:
Type ИмяТипа
Имя1 As Тип
Имя2 As Тип
…..
End Type
После описания типа данных можно разместить переменную заданного типа с помощью оператора Dim:
Dim <имя_переменной> As <имя_типа>
Доступ к элементам переменной пользовательского типа осуществляется, по аналогии с доступом к свойствам, путем указания точки после имени переменной. При этом переменные одинакового типа можно присваивать не поэлементно, а напрямую:
Type usrPersonType
Name As usrName
Number As Integer
End Type
Public usrCustomer As usrPersonType, usrSupplier As usrPersonType
Private Sub Command_Click()
usrSupplier.Name = "Ilse"
usrSupplier.Number = 21873
usrCustomer = usrSupplier
End Sub
Переменные usrSupplier и usrCustomer относятся к одному типу usrPerson. Поэтому они присваиваются напрямую, а не поэлементно.
Операторы языка VBА
Оператор – неделимое предложение, выполняющее какое-либо действие над имеющимися данными. Представляет собой любую комбинацию ключевых слов, свойств, функций, операций и символов, совокупность которых представляет собой конкретную конструкцию, распознаваемую VBA.
Оператор присваивания
Данный тип оператора служит для присвоения начальных значений, записи результата вычисления в переменную, изменения значений. Имеет следующий вид:
ИмяПеременной = Формула
Переменная слева от знака равенства может быть простой переменной, элементом массива или свойством объекта. Если переменной присваивается значение ссылки на объект, то оператор присваивания имеет вид:
Set ИмяПеременной = Формула
Формула состоит из переменных, констант, операций и функций. Для записи формул применяют математические операции.
Инструкции языка VBA
Операторы VBA условно их можно разделить на группы:
· операторы передачи управления;
· операторы выбора;
· операторы циклов.
Операторы передачи управления
Операторы передачи управления применяются в программе для реализации безусловных алгоритмических конструкций. Они выполняют переход с одного участка программы на любой другой без какого-либо условия.
GOTO идентификатор,
где идентификатор – метка программы. Метка – идентификатор, помещенный слева от программного оператора и отделенный от него двоеточием.
Для получения хорошего стиля программирования следует избегать применения оператора GoTo.
Операторы выбора
Операторы выбора используются в программе для реализации условных алгоритмических конструкций, которые вызывают выполнение различных частей программы в соответствии с условиями, существующими на момент выполнения этих операторов.
В VBA существует два типа операторов выбора:
· операторы условия (If … Then … Else);
· переключатели (Select Case).
Оператор If … Then … Else
Синтаксис оператора имеет вид (в случае простого однострочного оператора):
If Условие Then [Инструкция1] [Else [Инструкция2]
В случае блочного оператора синтаксис имеет вид:
If Условие Then
[Инструкция1]
[Инструкция2]
[Else
[Инструкция3]
[Инструкция4]
End If]
Строчный оператор используется в том случае, когда при разветвлении программы необходимо на каждой ветке выполнить по одной инструкции, а блочный необходим тогда, когда инструкций несколько.
Кроме того, блочная структура с ElseIf позволяет анализировать несколько условий:
If Условие1 Then
Блок1
ElseIf Условие2 Then
Блок2
………
ElseIf УсловиеN Then
БлокN
Else
БлокElse
End if
Если требуется проверить достаточно большое количество условий, вместо многократного использования ключевого слова ElseIf применяют оператор Select Case. Оба варианта работают одинаково хорошо, однако оператор Select Case, с точки зрения программиста, использовать удобнее.
Переключатели
Оператор Select Сase используется, когда необходимо выбрать из множества значений выражения.
Синтаксис инструкции:
Select Case Выражение
[Case списокУсловий1
[Инструкции1]]
[Case списокУсловий2
[Инструкции2]]
…
[Case списокУсловийN
[ИнструкцииN]]
[Case Else
[Инструкции_else]]
End Select
Список Условий является обязательным при наличии инструкции Case. Имеет вид:
· Case КОНСТАНТА1, КОНСТАНТА2, КОНСТАНТА3, …
· Case Is Знак_отншения КОНСТАНТА
· Case КОНСТАНТА1 to КОНСТАНТА2
Операторы цикла
Для многократного выполнения одного или нескольких операторов предназначены циклы. VBA предлагает 4 конструкции циклов:
· цикл For...Next – повторяет набор инструкций указанное число раз;
· цикл Do...Loop – повторяет набор инструкций, пока условие имеет значение True или пока оно не примет значение True;
· цикл While...Wend – повторяет набор инструкций, пока условие имеет значение True;
· цикл For Each...Next – повторяет набор инструкций для каждого объекта семейства.
For…Next
Цикл For...Next является самой старой и самой простой конструкцией и используется в случае, если заранее известно количество повторений группы инструкций:
For Счетчик = Начальное_значение То
Конечное_значение [Step Шаг]
Операторы
[Exit For]
[Операторы]
Next [Счетчик]
Счетчик – обязательный элемент. Это должна быть числовая переменная. Она не может иметь тип Boolean или быть элементом массива.
Начальное_значение – обязательный элемент, содержит начальное значение переменной Счетчик.
Конечное_значение - обязательный элемент, содержит конечное значение переменной Счетчик.
Шаг – элемент необязательный, это значение, на которое изменяется счетчик при каждом выполнении тела цикла.
Do...Loop
Если количество проходов должно зависеть от условия, используют цикл Do...Loop. В зависимости от позиции условия различают два варианта цикла Do...Loop.