Как использовать цикл do while в vba?

VBA Do while — это цикл, в котором вам нужно указать условие, и это условие должно оставаться истинным для выполнения цикла. Проще говоря, сначала он проверяет, является ли указанное вами условие истинным или нет, и если это условие истинно, он выполняет цикл, в противном случае ничего.

На каждой итерации он проверяет условие и только затем выполняет инструкцию. Представьте, что вы хотите добавить листы в Excel, но общее количество листов составляет 12 или меньше. В этом случае вы можете использовать цикл do- while для написания этого кода.

Синтаксис

Вот синтаксис VBA для каждого последующего цикла.

 Do While Condition [statements] Loop
vba-do-пока-оператор-условия-цикла
  1. Условие: это условие, которое вы указываете, и оно должно быть истинным для выполнения цикла.
  2. Утверждение : строки кода, в которых вы хотите, чтобы цикл Do While выполнил условие, являются истинными.
  3. Цикл : это конечный оператор итерации цикла, который сообщает VBA вернуться и снова проверить условие.

Пример для понимания цикла DO While

Чтобы понять принцип Do While Loop, давайте напишем код для добавления листов в книгу, когда общее количество листов меньше двенадцати. Вам не нужно сообщать VBA, сколько листов нужно добавить, и при каждом запуске этого кода у вас всегда будет 12 листов.

Используйте следующие шаги:

  1. Прежде всего, вам нужно набрать на клавиатуре «Do While».
    type-the-keyword-do-while
  2. Далее вам нужно написать условие, которое сможет проверить, меньше ли общее количество листов в книге двенадцати.
  3. Для этого вам нужно использовать приведенный ниже код, который подсчитывает общее количество листов, а затем сравнивает его с числом двенадцать.
    condition-to-check-worksheets
  4. Далее вам нужно написать код для добавления листа. Этот код будет запущен, если указанное вами условие истинно.
    code-to-add-worksheet
  5. И в конце введите ключевое слово «Loop», чтобы завершить код.
    type-loop-to-end-the-code

Вот полный код, который вы только что написали:

 Sub vba_do_while_loop() Do While ActiveWorkbook.Worksheets.Count < 12 Sheets.Add Loop End Sub

Теперь позвольте мне объяснить, как работает этот код: указанное вами условие проверяет общее количество листов в книге, а затем у вас есть оператор «меньше», который сверяет количество листов с двенадцатью.

Когда количество листов меньше двенадцати, цикл продолжит работу и будет продолжать добавлять новые листы, но как только количество листов достигнет двенадцати, цикл остановится.

Проще говоря, цикл будет продолжать работать до тех пор, пока количество листов меньше двенадцати.

пример цикла do- while

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

Сделайте петлю для

Do Loop While — это расширенная версия Do While Loop, поскольку она работает так же, но есть небольшая разница при проверке условия.

В цикле Do While он выполняет одну итерацию цикла перед проверкой указанного вами условия, и если условие истинно, цикл продолжится.

Допустим, вы хотите написать некоторый код для проверки пароля, чтобы запустить некоторый код и продолжить цикл, пока пароль неверен (мы видим это в примере).

Синтаксис

Вот синтаксис VBA Do Loop While.

синтаксис-для-vba-do-loop- while
  1. Do: это начальное ключевое слово цикла Do While.
  2. Утверждение: это строки кода, которые вы хотите запустить в цикле.
  3. Loop While: это ключевое слово для продолжения цикла и проверки указанного вами условия.
  4. Условие: это условие, которое вы хотите проверить, прежде чем цикл начнет вторую итерацию и продолжит цикл.

Как вы можете видеть в синтаксисе Do Loop While, он сначала выполнит оператор один раз, затем перейдет к условию и проверит его, и если это условие истинно, он запустит цикл и продолжит его, пока условие истинный.

Пример для понимания цикла DO while

Чтобы понять цикл do while, давайте напишем код, который будет отображать поле ввода и попросит пользователя ввести пароль.

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

  1. Сначала объявите две переменные, необходимые для хранения пароля и счетчика попыток.
    declare-two-variables-you-need-for-storing
  2. После этого введите ключевое слово «Do». Здесь вам не нужно сначала определять условие, как вы видели в синтаксисе.
    type-the-do-keyword
  3. Далее вам нужно написать строку кода для отображения поля ввода, в котором пользователю предлагается ввести пароль.
    write-a-line-of-code
  4. Отсюда вам нужно установить счетчик, который может считать до пяти (складывается с каждой итерацией цикла).
    define-a-counter
  5. Теперь введите ключевое слово «Loop While» и установите два условия, которые могут проверять значение, введенное пользователем и в поле ввода, а также проверять значение счетчика, если оно меньше 5.
    type-keyword-loop-while-and-define-two-condition
  6. В конце напишите код, который хотите запустить. Здесь я использую оператор IF, который отображает окно сообщения, если пароль, введенный пользователем, верен.
    write-the-code-you-want-to-run
 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, цикл остановится .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *