- •Часть VI
- •Глава 6.1 Создание приложений с помощью vba Возможности Visual Basic
- •Редактор Visual Basic (vbe)
- •Управление проектами в vbe
- •Глава 6.2 Основы программирования на ув6 Работа с переменными
- •Использование констант
- •Типы данных Object и Variant
- •Простейшие конструкции и операторы
- •Конструкции управления
- •Разновидности циклов
- •Работа с массивами
- •Работа со строками
- •Работа с датой и временем
- •Пользовательские процедуры и функции
- •Sub название процедуры (параметры) операторы
- •Function название функции (параметры) [As тип] операторы
- •Работа с записями
- •Работа с файлами
- •Input(число, номер)
- •Глава 6.3 Объектные модели
- •Объектная модель vba
- •Объектная модель Microsoft Office 2000
- •Объектная модель Microsoft Word 2000
- •Объектная модель Microsoft Excel 2000
- •Объектная модель Microsoft Access 2000
Разновидности циклов
Кроме структур принятия решений, существует еще одна разновидность управляющих конструкций, называемая циклом. Цикл - это алгоритмическая структура, при помощи которой реализуется многократное повторение блоков операторов.
В языке Visual Basic существует два основных вида циклов, которые реализуются при помощи конструкций For... Next и Do... Loop.
Цикл For... Next. Используется в том случае, когда количество повторов заданного блока операторов известно заранее. Данная конструкция выглядит следующим образом:
For счетчик = нач. значение то кон. значение [Step шаг]
Операторы1 [Exit For]
Операторы2 Next [счетчик]
Когда приведенные операторы выполняются первый раз, то переменной-счетчику присваивается начальное значение, после чего возможны два варианта действий. Если в результате проверки условия счетчик > конечное и было получено значение True, то происходит завершение цикла, при этом блоки Операторы! и Операторы2 ни разу не выполняются. С другой стороны, если результатом проверки условия является False, то в этом случае блоки операторов выполняются первый раз, после
438
чего происходит переход на начало цикла. Далее значение переменной-счетчика увеличивается на шаг, расположенный после ключевого слова Step (в случае его отсутствия устанавливается шаг = 1). После этого снова проверяется истинность условия счетчик > конечное значение и т. д., окончание цикла происходит в тот момент, когда результатом данной проверки станет значение True.
Зачастую бывает необходимо "аварийно" завершать работу цикла при выполнении какого-либо дополнительного условия. В этом случае внутри цикла следует использовать служебное словосочетание Exit For, которое обычно располагают в управляющей конструкции, например:
If условие Then Exit For
Если результатом проверки условия будет значение True, то выполнение цикла будет прекращено, причем блок Операторы1 будет выполнен очередной раз, а блок Операторы2 - нет.
Цикл Do—Loop. Применяется в том случае, когда число повторений операторов тела цикла заранее неизвестно. Существует четыре разновидности данной конструкции. При использовании первых двух цикл либо выполнится много раз, либо не выполнится вообще.
Do Until условие Операторы
Loop
Если результатом проверки условия является значение False, то блок Операторы выполняется, иначе осуществляется переход на оператор, расположенный после служебного слова Loop. С другой стороны, если первая проверка условия даст результат True, то цикл не выполнится ни разу.
Do While условие
Операторы Loop
Если условие истинно, то происходит выполнение блока Операторы, если же оно ложно, то есть результатом проверки является значение False, то цикл ни разу не выполнится.
439
В случае использования последних двух конструкций цикл будет выполнен хотя бы один раз.
Do
Операторы Loop Until условие
Блок Операторы выполняется до тех пор, пока результатом проверки условия является значение False, иначе выполнение цикла заканчивается.
Do
Операторы Loop While условие
В случае ложности условия выполняется блок Операторы, если же оно истинно, то есть результатом проверки является значение True, то происходит окончание цикла.
В том случае, когда необходимо прервать выполнение цикла, применяются разновидности оператора Exit, который располагается в конструкции принятия решения. При этом для цикла For... Next используется Exit For, а для любого из циклов Do... Loop применяется Exit Do. После выполнения данного оператора происходит немедленное завершение цикла без выполнения каких-либо дополнительных операций.
Если аварийное завершение было использовано в цикле For...Next, то значение переменной-счетчика останется таким, каким оно было в момент выхода, в отличие от нормального завершения работы цикла, когда оно становится на единицу больше заданного конечного значения. Приведенная особенность зачастую может быть использована при решении различных задач.
Пример 6.1. Имеется массив из десяти числовых элементов. Необходимо определить среди них первое положительное значение и его индекс, после чего завершить дальнейшую проверку.
Листинг 6.4. Поиск в массиве первого положительного элемента
Dim intArray(l To 10) As Integer
Dim inti As Integer
Dim intResult As Integer
' Ввод элементов массива
440
For inti = 1 to 10
If intArray(intI) > 0 Then
intResult = intArray(intI) Exit For
End If Next
Теперь в переменной intl 'содержится значение индекса 'найденного элемента массива
