Цикл For..Next

Синтаксис

For counter = Start To End [Step StepSize]

Statements

Next [counter]

Counter - любая численная переменная VBA

Start - любое численное выражение , определяет начальное значение для переменной counter

End - численное выражение, определяет конечное значение для переменной counter

Statements - один, несколько или ни одного оператора VBA (тело цикла).

По умолчанию VBA увеличивает переменную counter на 1 каждый раз при выполнении операторов в цикле. Можно задать другое значение (SterSize - любое численное выражение), на которое будет изменяться counter.

Ключевое слово Next сообщает VBA о том, что достигнут конец цикла. Необязательная переменная counter после ключевого слова Next должна быть той же самой переменной counter, которая была задана после ключевого слова For в начале структуры цикла.

Обратите внимание! При уменьшении счетчика цикла For..Next цикл выполняется, пока переменная счетчика больше или равна конечному значению, а когда счетчик цикла увеличивается, цикл выполняется, пока переменная счетчика меньше или равна конечному значению.

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

Синтаксис

For Each Element In Group

Statements

Next [Element]

Element - переменная, используемая для итерации по всем элементам в определенной группе

Group - это объект коллекции или массив

Statements - один, несколько или ни одного оператора VBA (тело цикла).

Цикл For Each..Next всегда выполняется столько раз, сколько имеется элементов в определенной группе.

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

19.Do…Loop. Это очень простая вещь. Цикл работает до тех пор, пока не выполнится какое-нибудь условие. Например мы будем увеличивать переменную X до тех пор, пока оне не станет равной, например, 100. Для этого применяется аргумент Until:

Do Until x>=100

x=x+1

Loop

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

Do

x = x + 1

Loop Until x >=100

Можно цикл записать наоборот, и он будеn выполняться до тех пор, пока соблюдается какое-то условие. Для этого применяется аргумент While (делать, пока...) :

Do While x < 100

x = x + 1

Loop

или же:

Do

x = x + 1

Loop While x < 100

Во всех четырех случаях результат будет один. Цикл остановится, когда X=100. Только надо обращаться с ними аккуратно. Если ты поставишь условие, которое изначально ложно, цикл не выполнится ни разу, и наоборот если условие будет истинно всегда, возникнет бесконечный цикл и программа по-сути зависнет. Вот этот цикл не будет выполняться:

Do While x =100

x = x + 1

Loop

а этот будет бесконечным:

Do Until x < 0

x = x + 1

Loop

20.With...End With позволяет выполнить ряд операторов с указанным объектом без повторного указания имени объекта. Если классификационный путь к объекту слишком длинный, использование With...End With может повысить производительность. Блок With также уменьшает количество повторных наборов классификационного пути и риск неверного ввода одного из его элементов.

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

(Без понятия надо иль нет)