Данный урок по 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


2016-06-02 • Просмотров [ 39 ]