Ещё один способ организовать цикл – использование конструкция цикла For.

Конструкция цикла For является простой как карандаш. Зачем нам For, если есть While? Даже не знаю, по мне так For более простой для восприятия, может, поэтому с ним реже допускают ошибки. Вообще это дело вкуса, но я, когда есть возможность, использую всё-таки For. Хотя раньше привычние был While.

Разберём работу For на живом примере, то есть создадим небольшой макрос, например, по нахождению квадратов чисел от 1 до 10. И выведем результаты в таблицу Excel.

Алгоритм макроса следующий. Заданное количество раз находить квадрат начального числа, записывать результат и увеличить это число.

Я вижу здесь все предпосылки для использования For. С помощью его сделаем это очень коротко.

Создаём основу нашего макроса.

For i = 1 to 10
Next

И For, и to, и Next – ключевые слова. А запись означает следующую команду – повторяй от единицы до десяти с шагом один.

Также приведу и более развёрнутую запись.

For i = 1 to 10 step 1
Next

При это step – шаг может быть и отличным от единицы, и даже отрицательным. Но если слово step отсутствует, то шаг равен единице.

Теперь осталось выполнить расчёт, а сохранять будем в ячейку с координатой (i,1). Тогда при увеличении i автоматически будет нарастать номер строки. Таким образом, мы немного оптимизировали код.

Запишем наши рассуждения, и тогда получим.

Sub program() 'Начало макроса program
     For i = 1 To 10 Step 1
     Cells(i, 1).Value = i ^ 2 ' В ячейку (i,1) запишем квадрат i
     Next
End Sub 'Конец макроса program

Копируем код в редактор VBA и жмём «F5».

В итоге имеем.

<

Получили то, что хотели.

Аналогом же Exit Do в While для For является Exit For. Если нам надо закончить For при наступлении условия, то можно поместить Exit For в конструкцию if. Например,

For i = 1 To 10 Step 1
     If (i = 5) then Exit For
Next.

На этом про For заканчивается.

Содержание                                               Предыдущая << • >> Cледующая                                               Автор:Muha


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