Цикл Do-While (VBA) не циклический. Vba цикл do while


Оператор While... End While (Visual Basic)

Пока условие остается равным True, для повторения операторов неограниченное число раз используйте структуру While...End While. Для большей гибкости с условием, с которым происходит проверка или результат, для которого вы его проверяете, предпочтительнее использовать Оператор Do...Loop (Visual Basic). Если вы хотите повторить инструкцию заданное количество раз, Оператор For... Next (Visual Basic) обычно является лучшим выбором.

Если condition равно True, все statements работают до тех пор, пока не встретится оператор End While. Элемент управления затем возвращения к выписке While и condition повторно проверено. Если condition по-прежнему равно True, процесс повторяется. Если это False элементу управления пропуски в выписке, которая следует за выпиской End While.

Оператор While всегда проверяет условие, прежде чем она запускает цикл. Выполнение цикла продолжается до тех пор, пока значение условия остается True. Если conditionFalse, то при первом вводе цикл, оно не будет выполняться, даже один раз.

condition обычно является результатом сравнения 2 значений, но может быть любым выражением, результатом которого является Тип данных Boolean (Visual Basic) значение (True или False). Это выражение может включать значение другого типа данных, таких как числовой тип, который был преобразован в Boolean.

Циклы While могут вкладываться друг в друга. Также можно вложить друг в друга различные виды управляющих структур. Дополнительные сведения см. в разделе Вложенные структуры управления (Visual Basic).

Оставьте пока

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

Обычно используется Exit While после некоторое условие оценивается (например, в структуре If...Then...Else ). Выход из цикла может потребоваться при обнаружении условия, которое делает бесполезным или невозможным продолжение итераций, например ошибочное значение или запрос на завершение. Можно использовать Exit While при тестировании условие, которое может привести к бесконечному циклу, цикл, который может выполнять очень большой или даже на бесконечное число раз. Затем можно использовать Exit While для выхода цикл.

Любое число операторов Exit While можно разместить в любом месте цикла While.

При использовании вложенных циклов While оператор Exit While передаст управление за пределы самого внутреннего цикла следующему уровню вложения.

Continue While выписки управление немедленно производит передачу к следующей итерации цикла. Дополнительные сведения см. в разделе Оператор Continue (Visual Basic).

msdn.microsoft.com

Nest Do While цикл в VBA не заканчивается MS Excel онлайн

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

Do While RF > 0 And B1 = False'This is for the 1 dollar bills

Если вы сделаете аналогичные изменения для трех других внутренних циклов, это может сработать, как я думаю, вы намереваетесь это сделать. С уважением, Маты

Если вы хотите остановить цикл во время его обработки, вам нужно поставить чек перед каждым новым Do While чтобы проверить, равен ли RF равно или меньше 0 :

if RF <= 0 then exit Do

DragonSamu правильно; вы должны добавить, if RF <= 0 then exit Do перед каждым внутренним циклом.

  • Do While: начнет цикл, если условия встречаются
  • Loop Until: перезапустит Loop до тех пор, пока не будут выполнены условия

Здесь я создал Function TransferFunds для обработки внутренних циклов. Параметры в TransferFunds используют ByRef для изменения исходной переменной из основного кода.

Sub CheckRegister() Dim A1 As Currency, A5 As Currency, A10 As Currency, A20 As Currency, A50 As Currency, A100 As Currency Dim R1 As Currency, R5 As Currency, R10 As Currency, R20 As Currency, R50 As Currency, R100 As Currency Dim rf As Currency A1 = 36 A5 = 85 A10 = 50 A20 = 420 A100 = 0 rf = 175 TransferFunds rf, R1, A1, 1 TransferFunds rf, R5, A5, 5 TransferFunds rf, R10, A10, 10 TransferFunds rf, R20, A20, 20 TransferFunds rf, R50, A50, 50 TransferFunds rf, R100, A100, 100 RefundMessage "Refund Due", R1, "Ones", R5, "Fives", R10, "Tens", R20, "Twenties", R50, "Fifties", R100, "Hundreds" RefundMessage "Remaining Register", A1, "Ones", A5, "Fives", A10, "Tens", A20, "Twenties", A50, "Fifties", A100, "Hundreds" End Sub Sub TransferFunds(ByRef rf As Currency, ByRef RValue, ByRef AValue As Currency, Denomination As Integer) Dim RefundAmount As Currency If rf > AValue Then RValue = AValue Else RValue = RValue Mod Denomination End If AValue = AValue - RValue rf = rf - RValue End Sub Sub RefundMessage(Title As String, ParamArray arValuePairs() As Variant) Dim msg As String, Denomination As String Dim i As Integer, cValue As Currency For i = 0 To UBound(arValuePairs) Step 2 cValue = arValuePairs(i) Denomination = arValuePairs(i + 1) If cValue > 0 Then msg = msg & FormatCurrency(cValue, 2) & " in " & Denomination & vbCrLf End If Next MsgBox msg, vbInformation, "Refund Due" End Sub

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

За исключением этой строки:

MsgBox "a20 " & RF > 0

Ваш код будет компилироваться и запускаться, но, возможно, не так, как вы ожидаете. Поэтому вместо того, чтобы спрашивать, почему ваш код не работает, вы должны, вероятно, также объяснить, чего вы хотите добиться именно.

excel.bilee.com

Цикл Do-While (VBA) не циклический MS Excel онлайн

Как отмечают другие, Null – это не то сравнение, которое вы хотите сделать. Тестирование чего-либо для эквивалентности с помощью Null вернет Null – even ?Null = Null возвращает Null , поэтому ваша петля выходит рано. (Примечание. Чтобы проверить Null , вам нужно использовать функцию IsNull которая возвращает логическое значение, но это НЕ, как вы проверяете пустую строку.)

В VBA для проверки нулевой длины или пустой строки вы можете использовать константу "" или vbNullString , или некоторые люди используют функцию Len для проверки нулевой длины.

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

Вероятно, это лучше всего подходит For Each цикла « For Each .

Dim rep as Variant For Each rep in repNames Worksheets.Add.Name = rep Next

Если вам нужно пропустить пустые значения или дублировать значения, вы можете добавить эту логику по мере необходимости в цикле:

For Each rep in repNames If rep <> vbNullString 'only process non-zero-length strings Worksheets.Add.name = rep End If Next

И т.п.

Во-первых, вы должны сравнивать с vbNullString . Это повторяется несколько раз:

' Declare variables Dim repNames() As String Dim x As Integer Dim i As Integer ' Set data x = 25 ReDim repNames(1 To x) repNames(1) = "Ahern" repNames(2) = "Castronovo" repNames(3) = "Glick" repNames(4) = "Fields" repNames(5) = "Murphy" repNames(6) = "Sleeter" repNames(7) = "Vivian" repNames(8) = "Walschot" repNames(9) = "Wilson" ' Loop through items i = 1 Do Worksheets.Add.Name = repNames(i) i = i + 2 Loop While repNames(i) <> vbNullString

Есть еще одна проблема – почему i = i + 2 ? В вашем вопросе вы говорите, что хотите, чтобы цикл выполнялся 9 раз, но с помощью i = i + 2 пропускает каждый другой элемент. Если вы действительно хотите прокручивать каждый элемент:

Do Worksheets.Add.Name = repNames(i) i = i + 1 Loop While repNames(i) <> vbNullString

Здесь вы идете, я изменил условный цикл и изменил i=i+2 на i=i+1 . Регулярный цикл while был бы лучше, чем do, в то время как первый элемент был бы пуст

Dim repNames() Dim x As Integer x = 25 ReDim repNames(1 To x) repNames(1) = "Ahern" repNames(2) = "Castronovo" repNames(3) = "Glick" repNames(4) = "Fields" repNames(5) = "Murphy" repNames(6) = "Sleeter" repNames(7) = "Vivian" repNames(8) = "Walschot" repNames(9) = "Wilson" Dim i As Integer i = 1 Do While repNames(i) <> "" Worksheets.Add.Name = repNames(i) i = i + 1 Loop

excel.bilee.com

Visual Basic.Net, оператор Do While . . . Loop

Урок из серии: “Программирование на Visual Basi.Net для школьников”

На предыдущем занятии было показано, как использовать оператор цикла For…Next для повторения блока кода заданное число раз. Но что делать, если количество повторов кода зависит от определенных условий?

На этом и следующем занятии будет показано применение операторов Do…While и Do…Until, которые позволяют повторять блок кода, пока значение определенного условия равно True, или до тех пор, пока значение определенного условия не станет равно True.Существует две разновидности циклов с условием: циклы с предусловием и циклы с постусловием.

На этом уроке мы рассмотрим цикл с предусловием Do While. Создадим проект с использованием этого цикла.

Цикл называется циклом с предусловием, если условие выполнения цикла стоит в начале, перед телом цикла.

На языке Visual Basic.Net цикл с предусловием реализуется с помощью конструкции Do While . . . Loop

Общий вид оператора:

Do While Условие Тело цикла Loop

Алгоритм выполнения оператора:

1. С помощью ключевого слова While (пока) проверяется условие продолжения цикла.

2. Если условие истинно (True), то выполняется тело цикла, алгоритм повторяется с пункта 1.

3. Если условие ложно(False) – цикл завершается.

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

Преждевременный выход из цикла программист может организовать при помощи конструкции Exit Do.

Проект “Делимость чисел”

В среде программирования Visual Basic.NET создайте новый проект  с именем “Делимость чисел”.

  1. Создайте новый проект с именем “Делимость чисел”.
  2. Создайте интерфейс пользователя по образцу
  3. Напишите программный код процедур-обработчиков, которые будут обрабатывать щелчки на кнопках Private Sub Button1_Click( . . . ' Делимость на 3 определяется по сумме цифрDim n, n1, sum As Integer Dim cifra As Byte n = Val(TextBox1.Text) 'Исходное число n1 = n 'создаем дубликат числа, сохраняем исходное число для вывода sum = 0 Do While n1 <> 0 cifra = n1 Mod 10 'отделяем последнюю цифру числа sum = sum + cifra n1 = n1 \ 10 'отбрасываем последнюю цифру Loop If n <> 0 Then If sum Mod 3 = 0 Then Label2.Text = "Число " & n & " делится на 3" Else Label2.Text = "Число " & n & " не делится на 3" End If Else Label2.Text = "Вы ввели 0" End If End Sub Private Sub Button2_Click( . . . ' делимость на 4 определяется по двум последним цифрам Dim n, ost As Integer n = Val(TextBox1.Text) 'исходное число If n <> 0 Then 'отделяем последние две цифры числа ost = n Mod 100 If ost Mod 4 = 0 Then Label2.Text = "Число " & n & " делится на 4" Else Label2.Text = "Число " & n & " не делится на 4" End If Else Label2.Text = "Вы ввели 0" End If End Sub Private Sub Button3_Click(. . . Dim n, ost As Integer n = Val(TextBox1.Text) 'исходное число If n <> 0 Then ost = n Mod 10 'отделяем последнюю цифру числа If ost = 0 Or ost = 5 Then Label2.Text = "Число " & n & " делится на 5" Else Label2.Text = "Число " & n & " не делится на 5" End If Else Label2.Text = "Вы ввели 0" End If End Sub
  4. Запустите программу несколько раз, вводя разные числа.
  5. Сохраните проект.

В этом разделе было показано применение цикла с предусловием Do…While для условногоповторения кода.

На следующем уроке будет рассмотрен цикл с постусловием Do…Until.

Следующий урок: Цикл с постусловием Do … Loop Until

Поделиться с друзьями

gospodaretsva.com

Цикл do vba

Разновидности циклов в Visual Basic Java/Операторы цикла for, while, do while — … Циклы в VBA - Microsoft Excel для начинающих VBA Операторы цикла Вложенные циклы - Mini-Softru Do, Loop- ключевые слова, обозначающие начало и конец цикла While, Until -ключевые слова определяющие тип цикла Цикл Do While выполняется до тех пор, пока условие имеет значение истинf Обозначения в документации (vba) Обзор Visual Basic для приложений (64-разрядная версия) Как избежать конфликтов имен Этот цикл будет выполняться вечно, а точнее Do…Loop используется для выполнения большого количества однообразных действий

Также у этого цикла имеется возможность досрочного завершения – Exit DoVBA для чайников В структуре Do While

Loop вход в цикл происходит вообще, VBA: Цикли (частина 2)Цикли "While", "Do", "Do… Цикл For в VBA Excel / Visual Basic / У меня такой простой вопросКак запустить цикл For с самого начала, если он не сработал в одном из нескольких условий?У меня просто задачка, такая, программа высчитывает несколько вариантов Цикл While в VBA Циклы в VBA, которые используют структуру Do

Loop (это while и until циклы) можно записывать с разным расположением фрагмента условия Циклы while, for - learnjavascriptru VBA ExcelЦикл Do While… Loop - vremya-ne-zhdetru VBA циклы — For Next и For Each в Excel | Exceltip VBAОрганизация циклов в программе цикл DoLoop выполняется 10 раз, затем логической переменной присваивается значение False, после чего он преждевременно завершается с помощью инструкции Exit Do Примеры макросов Excel - Microsoft Excel для … Циклы VBAЦиклы тестирующие условия до и после … Циклы VBA: for, while и другие - CodeTownru Операторы циклов в VBA 2012-04-30Автор: Владимир Ткаченко Источник: Обучение в интернет Цикл - это группа операторов, которые многократно выполняютсяДля организации циклов в VBA, те… Макрос Excel: пример 1Первоначально эта процедура Sub была приведена, как пример использования комментариев в коде VBAОднако, здесь также можно увидеть, как объявляются переменные, как работают ссылки на ячейки Excel Тривалість відео: 18 хв Структура Do… Loop позволяет повторять группу операторов неопределённое число операторовЦикл завершается по условиюVBA выполняет цикл пока логическое выражение, представленное с помощью Condition, равно FalseВ остальном цикл Do Loop Until полностью аналогичен циклу Do … VBA ExcelЦикл Do Until… Loop - vremya-ne-zhdetru Sub do_while_loop() Do 'Інструкції Loop While [умова] End Sub Замість того, щоби повторювати цикл поки виконується умова, можна також вийти з циклу по умові, якщо ми замінимо While на Until : Массивы и циклы в VBA Access 2003 | Info-Compru Справочник по VBA для Office Справочник по языку VBA Цикл Loop без оператора Do Содержание + Введение в справочник по языку VBA К циклам VBA относятся: Цикл For; Цикл Do While; Цикл Do Until; Цикл Do Until очень похож на цикл Do While: блок кода в теле … (2) Решение задач в MS Excel с использованием VBA… 6/9/2012 · Вопросы по Excel и VBA Цикл в ExcelFor/ Next тоже цикл, как и Do/Loop Если макрос находится не в модуле листа, советую ссылки на ячейки дополнить ссылками на листБез ссылки на лист определяется ячейка Цикл Loop без оператора Do Циклы Do/While/Until - eXcellence team - excel-teamru Цикл DoLoop - Циклы - Программирование на VBA … VBA виконує цикл поки логічне вираження, представлене за допомогою [Умова], так само FalseВ іншому цикл Do Until повністю аналогічний циклу Do WhileDo Loop WhileVBA для чайников When you write a Microsoft Visual Basic for Applications (VBA) macro, you may have to loop through a list of data on a worksheetThere are several methods for performing this task' Set Do loop to stop when an empty cell is reachedDo Until IsEmpty(ActiveCell) ' Insert your code here' Step down 1 row from present location В VBA имеется еще один условный цикл Do UntilLoopОтличие от Do While в том, что выполнение цикла будет до тех пор, пока условие выполняется С помощью оператора Do…Loop на языке Visual Basic можно реализовать цикл с предусловием и цикл с послеусловиемФормат цикла с предусловием следующий: Циклы Vba - VBA - Киберфорум Цикл do

while повторяется, пока верны две проверки: Проверка num Программирование на VBA - Мир MS Excel Sub do_while_loop() Do 'Инструкции Loop While [условие] End Sub Вместо того, чтобы повторять цикл пока выполняется условие, можно выйти из цикла по условию, если мы заменим While на Until : Тривалість відео: 12 хв -19- VBA ExcelЦикл Do Loop (Циклы ч3) - YouTube VBA в Excel; Цикл For Each…Next выполняется один раз для каждого элемента в

    Организация циклов VBA Программирование VBA в … · Файл PDF Цикл While Данный урок по Excel хотелось бы посвятить таким замечательным конструкциям в VBA , как циклыЦикл (программирование) — Википедия Досрочный Программирование циклов, цикл do while - VBA Microsoft Excel | VBA | Управляющие структуры Циклы Оператор Do While — еще один тил циклической структуры, представленной VBA отличие от цикла For-Next, цикл Do While выполняется до тех лор, пока удов ряется заданное условиеVBAВаш первый макрос Do i = i + 1 Loop Этот цикл будет выполняться вечноЧтобы он когда-нибудь завершился, нужно указать условиеУсловие может задаваться ключевыми словами While и UntilВ случае Цикл Do Until Loop в VBA Excel, его синтаксис и описание отдельных компонентовПримеры использования цикла Do Until Statements - один, несколько или ни одного оператора VBA (тело цикла)Цикл For Each

    Next всегда выполняется столько раз, сколько имеется элементов в определенной группе Вопрос №21VBAЦиклыПримеры Чтобы этого избежать, мы применим цикл и будем считывать строки до конца файлаДля этого придется разобраться с новым для нас циклом по условию Do Занятие 8 «Циклы в Visual Basic» VBA поддерживает циклические конструкции двух видов: Циклы с фиксированным числом повторений (циклы со Непрерываемый цикл While … WendЦикл Do … Цикл Do:LoopПрименяется в том случае, когда число повторений операторов тела цикла заранее неизвестноСуществуют четыре разновидности данной конструкцииПри использовании первых двух vba: Цикли (частина 1)Цикл — різновид керівної конструкції у високорівневих мовах програмування, призначена для організації багаторазового виконання набору інструкцій (команд)Цикл по условию DoLoop - vbzeronarodru

Next в большинстве случаев работает быстрее, чем цикл Do Lоор Избегать присвоения переменным типа Variant Visual Basic Обучение Циклы, переменные - YouTube VBA-Урок 81 Цикли (Loops) - moonexcelcomua В этой статье мы рассмотрим работу с различными циклом For в VBA Много примеров работы с циклами продемонстрирует результаты их выполненияЦикл DoLoop - vbzeronarodru
    Циклы VBAКоманды организации циклов Цикл DoLoopНу, учимся работать с текстовыми файламиЭто даст нам возможность прочитать существующий файл, изменить его, или создать свой, не прибегая к текстовым редакторамКроме того, в while do или repeat until / Microsoft Office / Sqlru 8Циклы в vba Cтруктура For …Next Цикл For Loop в VBA – один из самых популярных циклов в ExcelДанный цикл имеет две формы – For Next и For Each In NextДанные операторы используются для Организация выполнения повторяющихся действий в vba может быть выполнен Определения · При написании макроса vba может понадобиться организовать цикл по списку данных в электронной таблице 5/5 11/3/2011 · вводить последовательность до тех пор пока не встретится три подряд идущих положительных Виды циклов · Работа с циклами While и Until в VBA В языке Паскаль этот цикл реализует оператор repeat

    until; в Си — do…whileНа языке Pascal цикл с постусловием имеет следующий вид:: цикл do while - VBA - Киберфорум Работа с циклами в VBA:loop, for each, for next Основы циклов и массивов в VBA Access будут рассмотрены в этой статьеБудут приведены примеры использования, с подробными комментариямиЦикл do … Пока выполняется условие - цикл While Данный цикл выведет: 0123456789 Стоит обратить внимание, что число 10 выведено не будет, так как while это оператор предусловияОператор do Цикл VBA do loop позволяет задавать условие выполнения или завершения кодаРассмотрены примеры кода VBA Как организовать цикл по списку данных в … Цикл в Excel - excel-vbaru Цикл For в VBA Excel / Visual Basic / Sqlru циклы vba — advODKAcom Цикл Do While Loop в VBA Excel, его синтаксис и описание отдельных компонентовПримеры использования цикла Do While Урок 10 по VBA - Цикл for each | scriptcodingru И так, в следующей статье мы рассмотрим цикл do loop языка Visual Basic for Applications, который позволяет задавать условие выполнения операцийУрок 11 по VBA - Цикл do loop 8/6/2014 · Решено: Циклы Vba VBA Ответ Все дело в том что цифры идут вразнобой и цикл должен проверять условие для каждой строчкиVBA выполняет цикл For в следующей последовательности: 1Устанавливает значение переменной VBA: Цикли (частина 1)Цикли "For" та "For Each

megarulez.ru

Часть 6: Циклы - От психологии до информатики

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

К циклам VBA относятся:

Далее мы подробно рассмотрим каждый из этих циклов.

ОПЕРАТОР ЦИКЛА «FOR» В VISUAL BASIC

Структура оператора цикла For в Visual Basic может быть организована в одной из двух форм: как цикл For ... Nextили как цикл For Each.

ЦИКЛ «FOR … NEXT»

Цикл For ... Next использует переменную, которая последовательно принимает значения из заданного диапазона. С каждой сменой значения переменной выполняются действия, заключённые в теле цикла. Это легко понять из простого примера:

   Total = Total + iArray(i)

В этом простом цикле For ... Next используется переменная i, которая последовательно принимает значения 1, 2, 3, … 10, и для каждого из этих значений выполняется код VBA, находящийся внутри цикла. Таким образом, данный цикл суммирует элементы массива iArray в переменной Total.

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

For d = 0 To 10 Step 0.1
   dTotal = dTotal + d

Так как в приведённом выше примере задан шаг приращения равный 0.1, то переменная dTotal для каждого повторения цикла принимает значения 0.0, 0.1, 0.2, 0.3, … 9.9, 10.0.

Для определения шага цикла в VBA можно использовать отрицательную величину, например, вот так:

For i = 10 To 1 Step -1

Здесь шаг приращения равен -1, поэтому переменная i с каждым повторением цикла принимает значения 10, 9, 8, … 1.

ЦИКЛ «FOR EACH»

Цикл For Each похож на цикл For ... Next, но вместо того, чтобы перебирать последовательность значений для переменной-счётчика, цикл For Each выполняет набор действий для каждого объекта из указанной группы объектов. В следующем примере при помощи цикла For Each выполняется перечисление всех листов в текущей рабочей книге Excel:

Dim wSheet As Worksheet
For Each wSheet in Worksheets
   MsgBox "Найден лист: " & wSheet.Name

ОПЕРАТОР ПРЕРЫВАНИЯ ЦИКЛА «EXIT FOR»

Оператор Exit For применяется для прерывания цикла. Как только в коде встречается этот оператор, программа завершает выполнение цикла и переходит к выполнению операторов, находящихся в коде сразу после данного цикла. Это можно использовать, например, для поиска определённого значения в массиве. Для этого при помощи цикла просматривается каждый элемент массива. Как только искомый элемент найден, просматривать остальные нет необходимости – цикл прерывается.

Применение оператора Exit For продемонстрировано в следующем примере. Здесь цикл перебирает 100 записей массива и сравнивает каждую со значением переменной dVal. Если совпадение найдено, то цикл прерывается:

   If dValues(i) = dVal Then

ЦИКЛ «DO WHILE» В VISUAL BASIC

Цикл Do While выполняет блок кода до тех пор, пока выполняется заданное условие. Далее приведён пример процедуры Sub, в которой при помощи цикла Do While выводятся последовательно числа Фибоначчи не превышающие 1000:

   Dim i As Integer 
   Dim iFib As Integer 
   Dim iFib_Next As Integer 
   Dim iStep As Integer 
   Do While iFib_Next < 1000
      If i = 1 Then
         iStep = 1
         iFib = 0
         iStep = iFib
         iFib = iFib_Next
      Cells(i, 1).Value = iFib
      iFib_Next = iFib + iStep

В приведённом примере условие iFib_Next < 1000 проверяется в начале цикла. Поэтому если бы первое значениеiFib_Next было бы больше 1000, то цикл бы не выполнялся ни разу.

Другой способ реализовать цикл Do While – поместить условие не в начале, а в конце цикла. В этом случае цикл будет выполнен хотя бы раз, не зависимо от того, выполняется ли условие.

Схематично такой цикл Do While с проверяемым условием в конце будет выглядеть вот так:

Loop While iFib_Next < 1000

ЦИКЛ «DO UNTIL» В VISUAL BASIC

Цикл Do Until очень похож на цикл Do While: блок кода в теле цикла выполняется раз за разом до тех пор, пока заданное условие выполняется (результат условного выражения равен True). В следующей процедуре Sub при помощи цикла Do Until извлекаются значения из всех ячеек столбца A рабочего листа до тех пор, пока в столбце не встретится пустая ячейка:

Do Until IsEmpty(Cells(iRow, 1))
   dCellValues(iRow) = Cells(iRow, 1).Value

В приведённом выше примере условие IsEmpty(Cells(iRow, 1)) находится в начале конструкции Do Until, следовательно цикл будет выполнен хотя бы один раз, если первая взятая ячейка не пуста.

Однако, как было показано в примерах цикла Do While, в некоторых ситуациях нужно, чтобы цикл был выполнен хотя бы один раз, не зависимо от первоначального результата условного выражения. В таком случае условное выражение нужно поместить в конце цикла, вот так:

Loop Until IsEmpty(Cells(iRow, 1))

psybriefing.ru