VBA Пока Loop
VBA While Loop - это важная и мощная концепция, которую вы, возможно, видели в большинстве языков программирования. Если вы овладеете этой концепцией в VBA, вы сможете подготовить мощные сценарии, которые работают с данными электронных таблиц совершенно разными и удобными способами. В этой статье вы будете готовы исследовать мир различных циклов while, а также множество примеров для вашей помощи.
Целью цикла while является повторение определенного блока инструкций при условии выполнения условия. Точнее, в то время как цикл повторяет соответствующий оператор, в то время как условие истинно. Как только условие становится ложным (не соответствует), цикл завершается сам.
В Microsoft Excel VBA существует два типа цикла while:
- VBA Пока-Wend Loop
- VBA Do-While Loop
VBA While-Wend Loop существует, чтобы сделать код совместимым со старой версией кодов. VBA Do-While - это обновленная версия цикла while, которая является более гибкой и структурированной по сравнению с предыдущей и рекомендуется для использования сообществом Microsoft.
На всякий случай вам интересно, что означает Венд, это короткая форма «В то время как Конец» и работает так же.
Примеры VBA Пока Loop
Давайте углубимся в пошаговое руководство по различным типам VBA While Loops.
Вы можете скачать этот шаблон VBA While Loop Excel здесь - Шаблон VBA While Loop ExcelПример № 1
VBA Пока-Wend Loop
Синтаксис:
Давайте рассмотрим пример, чтобы увидеть это лучше.
- Определите подпроцедуру для создания макроса в новом модуле.
Код:
Sub WhileEx1 () End Sub
- Установите две переменные Number в One и Sum в ноль.
Код:
Sub WhileEx1 () Number = 1 Sum = 0 End Sub
- Установите условие while для числовой переменной.
Код:
Sub WhileEx1 () Number = 1 Sum = 0 Пока Number <= 10 End Sub
- Добавьте операторы, которые должны быть выполнены для этого условия while.
Код:
Sub WhileEx1 () Число = 1 Сумма = 0, В то время как Число <= 10 Сумма = Сумма + Число Число = Число + 1 Конец Sub
- Добавьте Debug.Print Sum, чтобы сумма первых 10 натуральных чисел могла быть напечатана одна за другой в Immediate Window.
Код:
Sub WhileEx1 () Number = 1 Sum = 0, в то время как Number <= 10 Sum = Sum + Number Number = Number + 1 Debug.Print Sum End Sub
- Наконец, завершите цикл While оператором Wend.
Код:
Sub WhileEx1 () Number = 1 Sum = 0, в то время как Number <= 10 Sum = Sum + Number Number = Number + 1 Debug.Print Sum Wend End Sub
- Нажмите F5 или кнопку Run, чтобы запустить этот код и увидеть результат.
В этом коде переменная суммы установлена в ноль. Таким образом, каждый раз, когда число увеличивается на 1, пока не достигнет 10 (используя цикл while), переменная sum будет добавлять предыдущую сумму к текущему числу и отображать ее в строке Immediate Window по строкам или по ступенчатой сумме, которую вы можете сказать.
Пример № 2
VBA Do-While Loop
Цикл Do-While, когда проверяется условие перед началом цикла
Цикл do while может быть выполнен двумя способами.
- Вы можете добавить условие перед началом цикла (это то же самое, что и цикл While-Wend). Здесь не было бы итерации цикла, если условие не выполняется в первый раз.
- Вы можете добавить условие в конце цикла для проверки. В этом случае произойдет хотя бы одна итерация цикла, прежде чем условие не будет выполнено.
Синтаксис:
Давайте возьмем один пример, чтобы прояснить ситуацию.
- Вставьте новый модуль и определите новую подпроцедуру для определения макроса.
Код:
Sub WhileEx2 () End Sub
- Определите новую переменную I как целое число. И начать его значение до 1.
Код:
Sub WhileEx2 () Dim i Dim Integer i = 1 End Sub
- Используйте Do-While, чтобы добавить условие в начале цикла.
Код:
Sub WhileEx2 () Dim i Dim Integer i = 1 Сделать пока i <= 10 End Sub
- Добавьте операторы, которые должны быть выполнены, если условие выполнено. Добавьте приведенную ниже строку кода в макрос.
Код:
Sub WhileEx2 () Dim i Dim Integer i = 1 Do Пока i <= 10 ячеек (i, 1). Значение = i * i End Sub
Этот оператор позволяет в i-й строке первого столбца хранить значение чисел в квадрате.
- Добавьте еще один оператор, который позволяет увеличивать i на 1 на каждой итерации цикла.
Код:
Sub WhileEx2 () Dim i Dim Integer i = 1 Do While i <= 10 Ячейки (i, 1). Значение = i * ii = i + 1 Loop End Sub
- Завершите этот цикл, добавив оператор Loop в конец вашего кода.
Давайте посмотрим на обход этого кода:
Для значений i от 1 (изначально i = 1) до 10 он вычисляет i * i (т. Е. Квадратное значение для каждого целого значения i) и вводит его в строки 1–10 столбца 1 (т. Е. Столбец A) соответственно, Выходные данные - не что иное, как квадратные значения целых чисел от 1 до 10.
- Запустите этот код, нажав F5 или кнопку Run, и посмотрите результат.
Вы можете видеть квадраты натуральных чисел от 1 до 10, которые хранятся в каждой ячейке отдельно от столбца А.
Пример № 3
Цикл Do-While, когда условие проверяется в конце цикла
Синтаксис:
Давайте посмотрим на пример, чтобы увидеть цикл лучше.
- Вставьте новый модуль и определите новую подпроцедуру для хранения макроса.
Код:
Sub WhileEx3 () End Sub
- Определите новое целое число i, как в предыдущем примере, и присвойте ему начальное значение.
Код:
Sub WhileEx3 () Dim i Dim Integer i = 1 End Sub
- Используйте условие Do, чтобы добавить операторы, которые должны быть выполнены, если условие выполняется.
Код:
Sub ПокаEx3 () Dim i Dim Integer i = 1 Do Cells (i, 2). Значение = i * ii = i + 1 End Sub
Рекомендуется использовать пробел (клавиша Tab) в качестве отступа, показанного в приведенном выше коде, что позволяет коду работать без сбоев, а также определяет хороший формат структуры кода.
- Используйте Loop while, чтобы добавить условие, которое будет проверяться для каждого выполняемого оператора.
Код:
Sub WhileEx3 () Dim i Dim Integer i = 1 Do Cells (i, 2). Значение = i * ii = i + 1 Цикл, пока i <= 10 End Sub
- Запустите этот код, нажав F5 или кнопку Run вручную и посмотрите результат.
Вы увидите результат, как показано на рисунке выше.
Как этот код работает в бэкэнде?
Система умножает значение i (начиная с 1) на себя и сохраняет во втором столбце (ячейки (i, 2)) для каждой строки один за другим. Код прекращает выполнение, как только значение переменной i достигает 10. Выходные данные могут быть одинаковыми, что логически означает, что оба кода работают одинаково. Но главное отличие заключается в компиляции кода. В последнем примере условие уже было, и система знала, до какого числа оно должно идти. Однако в этом коде система не знает об этом условии во время выполнения операторов и выполняет итерацию одну за другой. Пока условие ложно, код перестал выполняться.
Что нужно помнить о VBA While Loop
- Цикл While-Wend устарел и должен быть совместим со старыми версиями кодов. Вместо этого вы должны использовать цикл Do-While.
- Цикл Do-While более гибкий и хорошо структурированный по сравнению с циклом While-Wend.
- Цикл Do-while можно использовать двумя способами, где в одном случае вы можете сначала добавить условие для проверки, а затем добавить операторы, удовлетворяющие условию. По-другому, вы можете сначала добавить операторы, а затем добавить проверяемое условие.
- Отступы рекомендуется использовать в циклах, чтобы код мог быть более динамичным и легким для чтения.
Рекомендуемые статьи
Это руководство для VBA Do While Loop. Здесь мы обсудили, как использовать Excel VBA Do While Loop вместе с некоторыми практическими примерами и загружаемым шаблоном Excel. Вы также можете просмотреть наши другие предлагаемые статьи -
- Как использовать функцию поиска в Excel?
- Как использовать функцию VBA TRIM?
- VBA Arrays | Полный учебник
- Как использовать VBA Select Case?