Циклы Excel VBA

Циклы можно рассматривать как лучший функционирующий компонент VBA, а также как сердце макросов. Они обычно помогают вам сократить количество строк в вашем коде и выполнять работу за считанные минуты, которые могут занять у человека часы.

В повседневной жизни программист сталкивается с такими случаями, когда ему нужно снова и снова запускать один и тот же набор кода. Это называется зацикливанием. Очевидно, что каждый раз при запуске одного и того же кода результат будет примерно одинаковым с небольшим изменением переменной. Циклы имеют большой набор преимуществ, но самое главное это автоматизация. Это помогает автоматизировать вещи.

Если вы ранее не использовали VBA Script, вы можете просто открыть книгу Excel и нажать Alt + F11 . Это откроет проект VBA.

Давайте углубимся внутрь.

Предположим, мы хотим напечатать от 1 до 10 номеров за один снимок. Мы можем сделать это с помощью следующего кода.

Код:

 Sub loop1 () Debug.Print 1 Debug.Print 2 Debug.Print 3 Debug.Print 4 Debug.Print 5 Debug.Print 6 Debug.Print 7 Debug.Print 8 Debug.Print 9 Debug.Print 10 End Sub 

Если вы можете быстро пройти через код, я добавил Debug.Print один за другим, чтобы печатать числа от 1 до 10. После выполнения кода мы можем увидеть вывод в Immediate Window. Чтобы открыть Immediate Window, нажмите Ctrl + G в любом месте Excel.

Запустите код, используя клавишу F5 или вручную, как показано на скриншоте ниже. Итак, давайте проверим вывод для этого кода.

Типы циклов VBA в Excel

Будучи программистом, вы никогда не будете стремиться писать повторяющиеся строки, которые приведут к тому же результату. Вы хотели бы автоматизировать это. Поэтому мы увидим различные циклы Excel VBA и их использование на нескольких примерах.

Тип № 1 - VBA для следующего цикла

Для следующего цикла VBA позволяет нам проходить через диапазон ячеек и выполнять ту же задачу для каждой ячейки, указанной в цикле. Начальный номер и конечный номер должны быть указаны здесь.

код:

 Sub loop1 () Для i = 1-10 ячеек (i, 1). Значение = i Next i End Sub 

Этот код дает точно такой же вывод, как и предыдущий. Однако самое примечательное в этом коде - это сокращение количества строк. Мы сократили 12-строчный код до простого кода с 5 строками.

В этом коде loop1 - это имя макроса. Цикл for начинается с i = 1, он печатает значение i (т. Е. 1) в ячейке Excel, а затем Next снова возвращается к началу цикла for и заставляет i = 2 печатать значение i (т. Е. 2). в следующей ячейке и так далее до тех пор, пока код не достигнет своего последнего значения, т. е. 10. Как только код достигнет последнего значения i (10), код завершается сам из-за отсутствия любого целочисленного значения выше 10.

Запустите код, используя клавишу F5 или вручную. Таким образом, вы можете увидеть результат, как показано ниже.

Тип № 2 - VBA для цикла с шагом вперед

Как вы видели в предыдущем примере цикла, у меня было увеличение на 1 шаг. По умолчанию значение шага считается 1 в VBA. Однако можно ли сделать собственный шаг? Предположим, вы хотите видеть только четные числа от 1 до 20. Как это можно сделать?

Как подсказывает общая математика, числа, которые находятся на расстоянии 2 друг от друга (начиная с первого четного числа 2), считаются четными числами, верно?

Мы будем применять ту же логику. Смотрите ниже код для вашей справки.

Код:

 Sub ForwardStep () для i = 2–20 ячеек Step 2 (i, 1) .Value = i Next i End Sub 

Для значений, начинающихся с 2, этот цикл позволяет печатать 2, 4, 6, 8… 20 в последующих ячейках Excel. Шаг 2 явно дал, чтобы, начиная с номера 2, код переходил к следующему числу с шагом 2 (т.е. будет напечатано 4) и так далее. Этот процесс будет продолжаться до 20 в клетке. Как только в ячейке появляется 20, цикл автоматически завершается.

Запустите код, используя клавишу F5 или вручную. Таким образом, вы можете увидеть результат, как показано ниже.

Тип № 3 - VBA для цикла с шагом назад

Так же, как для цикла for с шагом вперед, мы можем использовать цикл for с шагом назад. Например, что если мы установим наш шаг назад равным -2 и запустим цикл for со значениями от 20 до 2?

Посмотрим, как это работает.

код:

 Sub BackwardStep () для i = 20 до 2 Step -2 Debug.Print i Next i End Sub 

После запуска кода мы можем увидеть вывод в Immediate Window. Чтобы открыть Immediate Window, нажмите Ctrl + G в любом месте Excel.

Поскольку мы указали начальную точку цикла как 20 и конечную точку как 2 с шагом -2, цикл начинается с 20, а на шаге -2 он переходит к следующему числу, равному -18, и так далее. Как только цикл достигает значения 2, он автоматически завершается и последнее значение будет напечатано как 2.

Тип № 4 - VBA, вложенный в цикл

Мы также можем вкладывать цикл For. Однако не рекомендуется выполнять вложение одного и того же цикла более трех раз в коде (это можно рассматривать как ошибку в логике).

Пожалуйста, смотрите код ниже для вложенного цикла for.

Код:

 Sub NestedFor () Для i = 1–10 Для j = 1–2 ячеек (i, j). Значение = i * j Далее j Далее i End Sub 

В этом примере, при i = 1 и j = 1, макрос помещает значение i * j (1 * 1) в пересечение строки i = 1 и столбца j = 1 (т.е. ячейки A1) и переходит к следующему значению j (2), сохраняя i = 1. На пересечении строки i = 1 и столбца j = 2 (т. е. ячейки B1) макрос вводит значение I * j (1 * 2). Цикл игнорирует следующее значение j, поскольку j изменяется только от 1 до 2 и переходит к следующему значению i.

Для i = 2 и j = 1 макрос вводит значение i * j (2 * 1) в пересечение 2- й строки и 1- го столбца (то есть ячейки A2) и продолжается. До диапазона я и j.

Запустите код, используя клавишу F5 или вручную, как показано на скриншоте ниже. Таким образом, вы можете увидеть результат, как показано ниже.

Тип № 5 - VBA Do While Loop

Цикл Do While - один из самых интересных циклов в VBA. Это позволяет вам проверить условие и записать вывод (DO), когда определенное условие или набор условий соблюдены (или условие / с ИСТИНА / ИСТИНА).

Смотрите код ниже:

Код:

 Sub do_ whileloop () Dim i As Integer i = 1 Do Пока i <= 10 ячеек (i, 1). Значение = i * ii = i + 1 Loop End Sub 

Этот цикл работает следующим образом:

Для значений i от 1 (изначально i = 1) до 10 он вычисляет i * i (то есть квадратное значение для каждого целого значения i) и вводит его в ячейки 1–10 соответственно. Выходные данные - не что иное, как квадратные значения целых чисел от 1 до 10. Пожалуйста, более внимательно посмотрите на Loop под этим кодом. Добавлять его обязательно, в противном случае система выдаст ошибку.

Запустите код, используя клавишу F5 или вручную. Таким образом, вы можете увидеть результат, как показано ниже.

Вот некоторые примеры циклов VBA, о которых я попытался позаботиться в этой статье. Надеюсь, он будет достаточно точным, чтобы прояснить некоторые понятия.

То, что нужно запомнить

  • При использовании цикла for с обратным шагом, убедитесь, что ваш начальный номер должен быть больше, чем ваш конечный номер, и наоборот.
  • В цикле Do, убедитесь, что вы используете цикл для закрытия do, прежде чем завершать весь код VBA. В противном случае система выдает ошибку компилятора с сообщением об ошибке «Без цикла».

Вы можете скачать этот шаблон VBA Loops Excel здесь - Шаблон VBA Loops Excel

Рекомендуемые статьи

Это руководство по циклам Excel VBA. Здесь мы обсудили типы циклов Excel VBA и их использование, а также некоторые практические примеры и загружаемый шаблон Excel. Вы также можете просмотреть наши другие предлагаемые статьи -

  1. Функция VBA в Excel
  2. VBA VLOOKUP Функция
  3. Сочетания клавиш Excel
  4. Excel Percentile Formula

Категория: