Циклы в visual basic

Циклы в visual basic

Доброго времени суток! Данную статью я решил посвятить рубрике по основам программирования в Visual Basic for Application. И сегодня мы поговорим о циклах в VBA, разберём их синтаксис и рассмотрим несколько примеров, которые часто встречаются программисту.

Сначала напомню, что цикл — процесс повторения части кода, выполняемый, пока не будет выполнено или нарушено заданное нами условие.

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

  • For
  • For each
  • While
  • Until

Цикл For в VBA


Цикл for в VBA обычно используется при зацикливании фрагмента кода, если нам известно конечное значение counter — счетчика, при котором мы выйдем из цикла.
Возьмём для примера самый распространённый пример:

Сгенерировать массив из 5 целых значений

Обратите ваше внимание, что в этом примере используется неявное объявление при работе с циклами в VBA. i% — означает неявное объявление переменной i в формате integer. Такая конструкция по сути заменяет следующую: dim i as integer . Это используется для сокращения кода и для удобства написания и чтения. В старых версиях VBA необходимо указывать знак формата после каждого использования неявной переменной. В более поздних версиях достаточно всего один раз.

VBA для цикла for даёт возможность использовать функцию Step. Как ясно из перевода, это шаг, с которым мы будем проходить наш интервал. По умолчанию, он равен 1. Популярный вариант использования встречается в случаях, когда counter связан с переменной, используемой внутри цикла. Например, при написании программ, связанных с функциями.

Найти пересечение графика функции y = 5*x + 5 с осью ординат

Теперь представим, что у нас достаточно большой диапазон и мы не хотим заставлять компьютер считать лишние итерации. На этот случай существует команда Exit For. Перепишем наш последний пример с новой командой.

C помощью команды Exit можно закончить выполнение любого цикла в VBA. Достаточно указать после Exit название используемого цикла. Также им возможно завершить работу любой процедуры или функции.

Цикл For Each в VBA


For Each в VBA основан на переборе всех элементов, указанного типа в массиве, объекте или группе.
Самый популярный вариант его использования — перебор страниц в рабочей книге.

Вывести названия всех листов в рабочей книге

И ещё один интересный пример:

Изменить размер шрифта и выравнить по центру текст в label

Тут следует понимать, что через Controls можно обратиться к любому элементу формы. Если отфильтровать по имени, например, как мы сделали выше, то можно выделить группы элементов и изменить их свойства. В данном случае, размер шрифта и выравнивание.

Читайте также:  Схема сабвуфера для компьютера

Цикл While в VBA


Циклы в VBA, которые используют структуру Do..Loop (это while и until циклы) можно записывать с разным расположением фрагмента условия. Как видите на картинке выше, условие может проверяться после выполнения одной итерации, а может перед запуском цикла.
Самый популярный пример:

Отсортируйте по возрастанию сгенерированный массив методом пузырька

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

Цикл Until в VBA


Как видите, отличия от while крайне несущественные. Цикл Until в VBA можно реализовать с помощью конструкции while NOT (condition). Тем не менее, приведу пример:

Заставить пользователя ввести число

Почему заставить? Потому, что если пользователь закроет окно ввода, это его не спасёт, оно будет появляться вновь и вновь пока он не введёт любое число.

На этом мы закончим. Сегодня мы рассмотрели важную тему циклов в VBA, разобрали основные примеры. Конечно все примеры по этой обширной теме сложно разобрать, но, тем не менее, основы вы должны понять. Оставляйте ваши комментарии, если у вас возникли вопросы.
Скачать исходник

Зачастую бывает необходимо "аварийно" завершать работу цикла при выполнении какого-либо дополнительного условия. В этом случае внутри цикла следует использовать служебное словосочетание Exit:For, которое обычно располагают в управляющей конструкции, например:

Если результатом проверки условия будет значение True, то выполнение цикла будет прекращено, причем блок операторы1 будет выполнен очередной раз, а блок операоры2 — нет.

Цикл Do:Loop. Применяется в том случае, когда число повторений операторов тела цикла заранее неизвестно. Существуют четыре разновидности данной конструкции. При использовании первых двух цикл либо выполнится много раз, либо не выполнится вообще.

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

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

В случае использования последних двух конструкций цикл будет выполнен хотя бы один раз.

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

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

Читайте также:  Мемориал www obd memorial ru

Цикл While:Wend. Также используется в том случае, когда число повторений операторов тела цикла заранее неизвестно, и имеет следующий синтаксис:

Если результатом проверки условия является значение True, то блок операторы выполняется, иначе осуществляется переход на оператор, расположенный после служебного слова Wend. С другой стороны, если первая проверка условия даст результат False, то цикл не выполнится ни разу.

Создание сайта

Циклы Visual Basic

Справочные данные Visual Basic 6.0
Поэтапное создания программ
Элементы программирования
Основы программирования

В программах Visual Basic для выполнения повторяющихся действий используются циклы. Они бывают следующих типов:

For. Next
For Each. Next
Do. . . Loop

Цикл с использованием конструкции For. Next

Конструкция For. Next выполняет последовательность команд определенное число раз. Такую конструкцию называют циклом, а выполняемые ею программные коды — телом цикла.

Синтаксис конструкции For.. .Next следующий:
For счетчик = начЗначение То конЗначение [Step шаг]
конструкции
Next[счетчик]

Первый аргумент конструкции — счетчик — определяет имя переменной, которая будет "считать" количество выполнении цикла. Параметр начЗначение указывает числовое значение, которое присваивается переменной-счетчику перед первым проходом цикла.

Цикл выполняется до тех пор, пока значение счетчика не превысит конечного значения, указанного после ключевого слова то. После каждого прохода цикла значение счетчика изменяется на величину шаг, указанную за ключевым словом step. Ключевое слово Next обозначает конец тела цикла и является обязательным.

Перед каждым проходом цикла Visual Basic сравнивает значения счетчика и аргумента конЗначение. Если значение счетчика не превышает установлен ного значения конЗначение, выполняются конструкции тела цикла. В противном случае управление переходит к следующей за Next конструкции. Например:

For nCountVar = 1 То 10 Step 2
nNextWeek(nCountVar) = nCountVar * 2
Next

Здесь цикл выполняется пять раз при значениях счетчика nCountVar 1, 3, 5, 7 и 9. Обратите внимание, что переменная-счетчик используется в теле цикла в качестве обычной переменной. Шаг изменения счетчика может быть отрицательным. Например:

For nCounter = 100 То 1 Step -10
nDecades(nCounter) = nCounter *2
Next

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

Ключевое слово step можно опустить. В этом случае значение шага по умолчанию принимается равным 1. Возможны ситуации, при которых выполнение цикла невозможно или, наоборот, его выполнение становится бесконечным. Например:

* Невыполняемый цикл: начальное значение счетчика
* больше конечного при положительном шаге цикла
For nCounter=100 To 1
nDecades (nCounter) = nCounter
Next
* Бесконечный цикл: значение счетчика
* изменяется в теле цикла и никогда не превысит 10 For nCounter = 1 То 10
nCounter = 1
Next

Читайте также:  Интерполяция кадров что это
Цикл с использованием конструкции For Each. Next

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

For Each элемент In группа
конструкции
Next элемент
Пример использования конструкции приведен ниже.

Dim objControl As Control
For Each objControl In Controls
objControl.Caption = "Test " & objControl.Caption
Next objControl

При использовании конструкции For Each.. .Next необходимо иметь в виду, что для набора объектов параметр элемент может быть только переменной типа Variant, общей переменной типа Object или объектом, перечисленным в Object Browser. Для массивов параметр элемент может быть только переменной типа Variant.

Цикл с использованием конструкции Do. Loop

Цикл, задаваемый конструкцией Do. Loop, выполняется до тех пор, пока истинно задаваемое в цикле условие. Синтаксис конструкции DO. . .Loop следующий:

Do While условие
конструкции
Loop
Аргумент конструкции условие является логическим выражением, значение которого проверяется перед каждым проходом цикла. Если это значение равно True, то выполняется последовательность команд, которые расположены между Do while и ключевым словом Loop.

Эти конструкции образуют тело цикла. Если при очередном проходе цикла условие равно False, то происходит выход из цикла и управление передается конструкции, следующей за Loop. Возможна ситуация, при которой операторы цикла не выполняются ни разу. Она возникает в том случае, если при первой проверке условия оно оказывается ложным.

В Visual Basic существует еще один вид цикла конструкции DO. Loop. Он отличается от рассмотренного ранее местом расположения условия. Если в предыдущей конструкции условие, по которому выполняется цикл, расположено в заголовке, то в этой конструкции условие располагается в конце цикла:

Do
конструкции
Loop While условие

При использовании этой формы оператора тело цикла выполняется хотя бы один раз, после чего осуществляется проверка заданного условия.
Есть еще две разновидности конструкции цикла Do. . .Loop. Они аналогичны рассмотренным ранее, но отличаются тем, что цикл выполняется до тех пор, пока условие ложно, а не истинно. Данные операторы имеют следующий синтаксис:

Do Until условие
конструкции
Loop
и
Do
конструкции
Loop Until условие
Пример использования конструкции приведен ниже.

Ссылка на основную публикацию
Фото авы удаленного вк
Рабочий способ который на 100 процентов поможет вам вернуть и восстановить вашу удаленную фотографию в социальной сети вконтакте. Мы постарались...
Умные часы для детей xiaomi mi bunny
Детские смарт-часы Xiaomi, изготовленные из прочного пластика различных оттенков, предназначены для отображения текущего времени и дополнительной информации (например, о пройденной...
Улучшить качество связи мтс
Усилитель сигнала МТС– специальный прибор, который необходим для того, чтобы предоставлять более сильный сигнал сотовой связи. Невозможно звонить или отправлять...
Фото внутренностей айфон 6
Шаг 1 Время обзора iPhone 6! Давайте посмотрим на некоторые технические спецификации: Процессор Apple A8 с 64-битной архитектурой Копроцессор движения...
Adblock detector