В этом уроке будет рассмотрена работа с циклом For в VBA. Пример работы с циклом For, так же будет продемонстрирован пример создания формул в Excel с помощью макросов.
Цикл For работает по принципу счетчика. For применяется в тех случаях, когда необходимо повторить некоторые действия заранее известное кол-во раз. Например, цикл For часто используется при чтении массивов.
Цикл For имеет следующий синтаксис:
For счетчик = начало цикла To конец цикла [Step шаг]
группа операторов, команд и т.д.
Exit For
Next счетчик
где,
- «счетчик» — переменная, которая изменяется на указанный «шаг». Если шаг не указан, то по умолчанию берется единица.
- «начало цикла», «конец цикла» — числа или переменные указывающие нижний предел счетчика и верхний. Остановка цикла происходит тогда, когда «счетчик» > «конец цикла» (или, если цикл обратный, т.е. с шагом -1, то «счетчик» < «конец цикла»).
- Exit For – команда принудительной остановки цикла. Применяется в тех случаях, когда произошло некоторое событие, после которого необходимо остановить выполнение команд в цикле, или для предотвращения возникновения ошибки.
Рассмотрим пару примеров использования цикла For. В дальнейшем, с этим циклом будем встречаться довольно часто.
Пример 1
Даны два столбца С и Е заполненные числами:
Необходимо сложить числа в столбце С с числами столбца Е следующим образом:
С2+Е21, С3+E20, …, C21+E2. Результат вывести в столбец D в виде формулы т.е. содержание ячейки результата должно быть «=С2+Е21».
Код макроса выглядит следующим образом (куда прописывать код читаем здесь):
Sub Цикл_For()
‘константа указывающая предел цикла т.е. до какого значения циклу бежать
Const n = 21
For i = 2 To n
‘ создаем строку формулу и сохраняем ее в ячейку
Cells(i, 4) = «=C» & CStr(i) & «+E» & CStr((n — i) + 2)
‘ продолжение когда выполняющегося в цикле
Next i
‘ остальной код программы
End Sub
Разбираем написанный код:
- Const n = 21 — описание константы n со значением 21, т.е. число строк по которому необходимо пробежаться циклу For;
- For i = 2 To n — i счетчик который будет изменяться на 1 с каждым проходом цикла. Счетчик начинается с 2 и заканчивается когда i>n;
- Cells(i, 4) — ячейка выделенного листа, i номер строки, 4 -номер столбца в который выводится результат. Обратите внимание, наш счетчик i указывает номер строки листа Excel;
- Next i — оператор закрытия цикла и перевода указателя к For. Все что находится между For и Next выполняется в цикле;
- CStr — функция преобразующая число в текст.
Ячейке мы присваиваем формулу созданную следующим образом «=C» & CStr(i) & «+E» & CStr((n — i) + 2). Знак & — «склеивание» символов, строк. В результате у нас получится формула «=Сn+E((n — i) + 2)» где n = 21, i — счетчик.
Страшно? Это только кажется 🙂
Все. После выполнения макроса мы получим следующий столбец (выделен), а в каждой ячейке формула:
Пример 2
Теперь рассмотрим цикл с указанным шагом. После расчета прошлого макроса мы получили три столбца, теперь нам необходимо из столбца E вычесть D, в столбец F вывести формулы вычитания. Код макроса следующий:
Sub Цикл_For_с_шагом()
Const n = 21
For i = n To 2 Step -1
Cells(i, 6) = «=E» & CStr(i) & «-D» & CStr(i)
Next i
End Sub
В данном случае все тоже самое, только цикл теперь «бежит» не от 2, а от 21 до 2 с шагом (Step) -1.
Результат выполнения получим следующий:
Цикл For, в VBA, является не единственным циклом. В дальнейшем будут рассмотрены еще пара вариантов циклов, без которых не обойтись при написании макрокоманд в Excel.
Прикрепленный файл: work_for.zip