Данный урок по Excel хотелось бы посвятить таким замечательным конструкциям в VBA, как циклы. И в нашей программе мы использовали циклы для того, чтобы рассчитать значения функции «y = x13 - 2 * x12 - x1(3 * Cos(x1)) – 5» на отрезке от 1 до 10 с шагом 0.1, то есть блок нашего кода выполнил 100 циклов, пока x1 не стал равным x2.
Do While x1 < x2 'Выполнять цикл операций, пока x1 < x2 y = x13 - 2 * x12 - x1(3 * Cos(x1)) - 5 'Рассчитать значение функции Сells(i, 1).Value = x1 'Записать x1 в ячейку с координатами (i,1) Cells(i, 2).Value = y 'Записать y в ячейку с координатами (i,2) i = i + 1 'Увеличить счётчик на 1 x1 = x1 + shаg 'Изменить x1 на величину шага Loop
А в каждом цикле было 5 операций.
1-ая - y = x13 - 2 * x12 - x1(3 * Cos(x1)) - 5 'Рассчитать значение функции
2-ая - Сells(i, 1).Value = x1 'Записать x1 в ячейку с координатами (i,1)
3-яя - Cells(i, 2).Value = y 'Записать y в ячейку с координатами (i,2)
4-ая- i = i + 1 'Увеличить счётчик на 1
5-ая x1 = x1 + shаg 'Изменить x1 на величину шага
Таким образом, конструкция
Do While (условие) 'где условие, например (x1 < x2) {Наш код} Loop,
в которую мы поместили наш код, позволила выполнить 500 операций, приэтом мы записали только 7 строчек кода.
Разновидностью Do While является конструкция
Do Until (x1 < x2) {Наш код} Loop
Но тут есть особенность, если условие выполняется, а именно x1 действительно меньше x2, цикл не выполнится ни разу. А если перевести дословно Do Until (x1 < x2), то получаем «Делай пока x1 не меньше x2»,что равносильно – «Делай пока x1 больше x2».
До этого наше условие (x1 < x2) проверялось в начале цикла. Но иногда необходимо сначала попробовать, а потом оценить результаты. Для такой последовательности действий используйте следующую конструкцию цикла.
Do {Тут что-то делаем} Loop While (x1 < x2) 'Проверяем условие.
Таким образом, у конструкции цикла While есть три похожие структуры.
Подведём итоги по ним. № 1
Do While (x1 < x2) 'Переводится как«Делай пока x1 меньше x2» {Наш код} Loop
№ 2
Do Until (x1 < x2) 'Помним, что переводится как«Делай пока x1 больше x2» {Наш код} Loop
№ 3
Do ' «Делай» {Тут что-то делаем} Loop While (x1 < x2) '«Пока x1 меньше x2»
Здесь можно было поставить точку, если бы не одно НО: особенности использования цикла While.
А теперь маленький вопрос, что будет, если мы напишем так?
Do While (1 < 2) Loop
Правильно, тут мы наблюдаем простой пример зацикливания. Получается, что условие (1<2) всегда верное, тогда наш цикл будет выполняться бесконечное число раз.
Поэтому, если вы попадёте в подобную ситуацию, то выполните блиц-команду «Ctrl+PauseBreak» - прервать выполнение программы, чтобы аварийно не выходить из Excel и не потерять наши данные.
Во-вторых, здесь следует отметить, что запись таких условий возможна, если вы, предвидя такой исход, предотвратите его, принудительно выйдя из цикла. Для этого предназначена команда Exit Do.
Do While (1 < 2) Exit Do ' Выйти из Do Loop
Но обычно, Exit Do используется в следующем контексте.
Do While (1 < 2) if (true) then Exit Do Loop
Это мы пока не рассматривали, но дословной перевод if (true) then Exit Do всё сразу объясняет – «Если Истина(а true – это и есть истина), тогда Выйти из Do». Но об этом будет чуть позже и поподробней. Вот и всё что я хотел Вам рассказать о While, если появятся вопросы - пишете, рад буду помочь.
Содержание Предыдущая << • >> Cледующая Автор:Muha