Читаем VBA для чайников полностью

Тип цикла

Особенности работы

Do. . .Loop

Пока или до тех пор, пока некоторое условие имеет значение True

For. . .Next

Заданное число раз

For Each. .. Next

Для каждого объекта из коллекции объектов

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

<p>Циклы Do</p>

Все возможные версии оператора Do ... Loop предназначены для повторения заданного блока программного кода неопределенно долго, пока не будет выполнено некоторое условие.

Для того чтобы выяснить, продолжать цикл или нет, оператор Do ... Loop оценивает заданное условное выражение типа условных выражений, используемых для оператора If... Then и описанных выше в разделе "Курс на использование условных выражений".

Случаев, когда структуры Do... Loop полезны, просто не счесть. Вот несколько примеров.

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

* Чтение данных из файла на диске, пока не будет обнаружен конец файла.

* Поиск и подсчет числа вхождений некоторой строки символов в более длинной строке.

* Организация холостой работы программы в течение некоторого времени.

* Выполнение некоторых действий по отношению ко всем элементам массива.

* Выполнение (с использованием операторов If... Then ) некоторых действий по отношению ко всем элементам массива или коллекции, удовлетворяющим определенным критериям (массивы и коллекции рассматриваются в главе 13).

<p>Типы операторов Do.. .Loop</p>

В VBA несколько видов циклов Do... Loop, но все они работают очень похоже.

Do. . .Loop Повторяет выполнение блока программного кода, пока некоторый условный оператор внутри цикла не выполнит команду End Do

Do While. . .Loop Начинает и повторяет выполнение блока программного кода, только если заданное условие принимает значение True

Do. . .Loop While Выполняет блок программного кода один раз, а затем повторяет выполнение, пока заданное условие принимает значение True

Do Until. . . Loop Начинает и повторяет выполнение блока программного кода, только если заданное условие принимает значение False

Do. . .Loop Until Выполняет блок программного кода один раз, а затем повторяет выполнение, пока заданное условие принимает значение False

Оператор Do While. . . Loop можно считать прототипом структуры Do. Вот его синтаксис:

Do While условие

(операторы, выполняющиеся, когда условие - True)

Loop

Обнаружив оператор Do While, VBA начинает проверять условие. Если представляющее условие выражение оказывается равным False, VBA игнорирует остальную часть цикла и переходит сразу к операторам программы, следующим за оператором Loop. Если же условие принимает значение True, VBA выполняет операторы в блоке. Достигнув оператора Loop, VBA возвращается опять к оператору Do While, чтобы проверить условие снова.

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

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

Следующий пример, основанный на использовании двух операторов Do While . . . Loop, переставляет в обратном порядке цифры в числе, предложенном пользователем. Наверное, этот пример не имеет никакой практической ценности, но он эффектный, работает в любом VBA-приложении и достаточно компактный, чтобы иллюстрировать работу циклов Do;

Sub ReverseTheDigits()

Dim intOriginalNumber As Integer

Dim intOneDigit As Integer, strBackwardsNumber As String

Do While intOriginal Number < 10

intOriginal Number = _

InputBox("Напечатайте число, большее 9.")

Loop

Do While intOriginalNumber

intOneDigit = intOriginalNumber Mod 10

strBackwardsNumber = strBackwardsNumber & intOneDigit

intOriginalNumber = Int(intOriginalNumber / 10)

Loop

MsgBox strBackwardsNumber

End Sub

Перейти на страницу:

Все книги серии Для чайников

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных