Упражнение 1
Изучите оператор For…Next.
Скопируйте в модуль код процедур TestFor, TestFor1, TestFor2 и TestFor3.
Выполните процедуры и проанализируйте результаты их выполнения.
Сделайте активным другой лист книги Excel.
Скопируйте в модуль код процедуры TestFor4, выполните её и проанализируйте результат выполнения.
Оператор While…Wend
Инструкция While…Wend выполняет некоторую последовательность инструкций до тех пор, пока заданное условие имеет значение True (Истина). Данный оператор является устаревшим и сохранён в языке VBA только из-за преемственности – чтобы сохранить возможность выполнения давно написанной программы.
Сиснтаксис оператора:
While условие
операторы
Wend
Здесь условие – обязательный параметр, это числовое или строковое выражение, результатом вычисления которого являются значения True или False;
операторы – один или более операторов, выполняемых, если условие равно значению True, параметр необязательный.
Пример использования:
Sub WW() 'Подсчёт суммы чётных чисел от 0 до 10
Dim k As Integer
Dim i As Integer
While k < 10
k = k + 2
i = i + k
Wend
MsgBox "Сумма чётных чисел от 0 до 10 равна " & i
End Sub
Результат работы процедуры:
Упражнение 2
Изучите оператор While….Wend.
Скопируйте в модуль код процедуры WW, выполните процедуру и проанализируйте результаты её выполнения.
Составьте процедуру подсчёта суммы S нечётных чисел L натурального ряда, находящихся в пределах 0<L<10, используя инструкцию While…Wend.
Составьте процедуру определения максимального и минимального значения числа в заданной строке листа Excel. Концом последовательности просматриваемых ячеек является пустая ячейка (значение =””). При выполнении этой процедуры использовать свойство рабочего листа Cells (см. лабораторную работу № 2).
Оператор Do…Loop
Существует четыре типа инструкции Do…Loop – два с предусловием и два с постусловием.
Цикл Do…Loop с предусловием:
1). Do While <условие>
[операторы_1]
[Exit Do]
[операторы_2]
Loop
Данный оператор повторяет выполнение операторов тела цикла до тех пор, пока заданное логическое условие истинно. Каждый раз перед выполнением операторов тела цикла проверяется условие и выполняется тело цикла, когда условие равно True, когда False – не выполняется, выполнение цикла завершается и программа переходит к выполнению оператора, следующего за оператором Do…Loop.
2). Do Until <условие>
[операторы_1]
[Exit Do]
[операторы_2]
Loop
Оператор выполняет циклические вычисления до тех пор, пока изначально ложное логическое условие не станет истинным. Отличие данного цикла от предыдущего состоит в том, что тело цикла выполняется, когда условие равно False, когда True – не выполняется и осуществляется выход из цикла.
Необязательный оператор Exit Do предусматривает выход из цикла из любого места тела цикла.
Цикл Do…Loop с постусловием:
1). Do
[операторы_1]
[Exit Do]
[операторы_2]
Loop While <условие>
1). Do
[операторы_1]
[Exit Do]
[операторы_2]
Loop Until <условие>
Цикл с постусловием в отличие от цикла с предусловием будет выполнен обязательно хотя бы один раз. Использование ключевых слов While и Until с условием такое же, как и в циклах с предусловием.
Ниже приведены примеры использования оператора Do…Loop.
Sub DWL()
Dim sName As String
Dim iResponse As Integer
Do While sName = ""
sName = InputBox("Введите свое имя: ")
If sName = "" Then
MsgBox "Вы не ввели имя "
iResponse =MsgBox("Хотите выйти из программы?", _ vbYesNo)
End If
If iResponse = vbYes Then Exit Sub
Loop
MsgBox "Вы ввели имя " & sName
End Sub
При запуске процедуры DWL выводится окно,
и если имя введено, то выводится окно с сообщением введённого имени.
Если же имя не введено и нажата кнопка OK или Cancel, то выводится диалоговое окно
и при нажатии кнопки “OK” выводится диалоговое окно
При нажатии кнопки “Да” выполнение процедуры завершается, а при нажатии “Нет” появится окно с предложением ввести имя снова.
В результате выполнения процедуры DUL в ячейке A1 активного листа будет выведено вычисленное значение, равное 10.
Sub DUL()
Dim j As Integer
Range("A1") = 0
Do Until Range("A1") > 8
Range("A1") = Range("A1") + j
j = j + 1
Loop
End Sub
