Как использовать цикл do while в vba?
VBA Do while — это цикл, в котором вам нужно указать условие, и это условие должно оставаться истинным для выполнения цикла. Проще говоря, сначала он проверяет, является ли указанное вами условие истинным или нет, и если это условие истинно, он выполняет цикл, в противном случае ничего.
На каждой итерации он проверяет условие и только затем выполняет инструкцию. Представьте, что вы хотите добавить листы в Excel, но общее количество листов составляет 12 или меньше. В этом случае вы можете использовать цикл do- while для написания этого кода.
Синтаксис
Вот синтаксис VBA для каждого последующего цикла.
Do While Condition [statements] Loop

- Условие: это условие, которое вы указываете, и оно должно быть истинным для выполнения цикла.
- Утверждение : строки кода, в которых вы хотите, чтобы цикл Do While выполнил условие, являются истинными.
- Цикл : это конечный оператор итерации цикла, который сообщает VBA вернуться и снова проверить условие.
Пример для понимания цикла DO While
Чтобы понять принцип Do While Loop, давайте напишем код для добавления листов в книгу, когда общее количество листов меньше двенадцати. Вам не нужно сообщать VBA, сколько листов нужно добавить, и при каждом запуске этого кода у вас всегда будет 12 листов.
Используйте следующие шаги:
- Прежде всего, вам нужно набрать на клавиатуре «Do While».
- Далее вам нужно написать условие, которое сможет проверить, меньше ли общее количество листов в книге двенадцати.
- Для этого вам нужно использовать приведенный ниже код, который подсчитывает общее количество листов, а затем сравнивает его с числом двенадцать.
- Далее вам нужно написать код для добавления листа. Этот код будет запущен, если указанное вами условие истинно.
- И в конце введите ключевое слово «Loop», чтобы завершить код.
Вот полный код, который вы только что написали:
Sub vba_do_while_loop() Do While ActiveWorkbook.Worksheets.Count < 12 Sheets.Add Loop End Sub
Теперь позвольте мне объяснить, как работает этот код: указанное вами условие проверяет общее количество листов в книге, а затем у вас есть оператор «меньше», который сверяет количество листов с двенадцатью.
Когда количество листов меньше двенадцати, цикл продолжит работу и будет продолжать добавлять новые листы, но как только количество листов достигнет двенадцати, цикл остановится.
Проще говоря, цикл будет продолжать работать до тех пор, пока количество листов меньше двенадцати.

Вот в чем дело: в коде, который вы только что написали, вам не нужно указывать количество листов, которые вы хотите добавить, но если вы перейдете к следующему циклу, вам нужно будет указать количество расчетных листов, которые вы хотите добавить.
Сделайте петлю для
Do Loop While — это расширенная версия Do While Loop, поскольку она работает так же, но есть небольшая разница при проверке условия.
В цикле Do While он выполняет одну итерацию цикла перед проверкой указанного вами условия, и если условие истинно, цикл продолжится.
Допустим, вы хотите написать некоторый код для проверки пароля, чтобы запустить некоторый код и продолжить цикл, пока пароль неверен (мы видим это в примере).
Синтаксис
Вот синтаксис VBA Do Loop While.

- Do: это начальное ключевое слово цикла Do While.
- Утверждение: это строки кода, которые вы хотите запустить в цикле.
- Loop While: это ключевое слово для продолжения цикла и проверки указанного вами условия.
- Условие: это условие, которое вы хотите проверить, прежде чем цикл начнет вторую итерацию и продолжит цикл.
Как вы можете видеть в синтаксисе Do Loop While, он сначала выполнит оператор один раз, затем перейдет к условию и проверит его, и если это условие истинно, он запустит цикл и продолжит его, пока условие истинный.
Пример для понимания цикла DO while
Чтобы понять цикл do while, давайте напишем код, который будет отображать поле ввода и попросит пользователя ввести пароль.
Это поле ввода будет продолжать четко показывать, что пароль, введенный пользователем, неверен в течение пяти попыток, после чего поле ввода исчезнет без выполнения процедуры.
- Сначала объявите две переменные, необходимые для хранения пароля и счетчика попыток.
- После этого введите ключевое слово «Do». Здесь вам не нужно сначала определять условие, как вы видели в синтаксисе.
- Далее вам нужно написать строку кода для отображения поля ввода, в котором пользователю предлагается ввести пароль.
- Отсюда вам нужно установить счетчик, который может считать до пяти (складывается с каждой итерацией цикла).
- Теперь введите ключевое слово «Loop While» и установите два условия, которые могут проверять значение, введенное пользователем и в поле ввода, а также проверять значение счетчика, если оно меньше 5.
- В конце напишите код, который хотите запустить. Здесь я использую оператор IF, который отображает окно сообщения, если пароль, введенный пользователем, верен.
Sub vba_do_loop_while() Dim varPassword As Variant, i As Double Do varPassword = InputBox _ ("Enter the password to start the procedure:", _ "Check Password 1.0") i = i + 1 Loop While varPassword <> "CorrectPassword" And i < 5 If varPassword = "CorrectPassword" Then MsgBox "Your Password is Correct" End If End Sub
Позвольте мне объяснить вам этот код.
- В первой части этого кода у вас есть цикл do while, который отображает пользователю поле ввода и запрашивает у него пароль .
- И если пароль неверен, цикл будет продолжаться до тех пор, пока пользователь не введет правильный пароль.
- Но поскольку вы используете счетчик для подсчета итераций цикла, и как только этот счетчик достигнет 5, цикл остановится .