Использование условных инструкций




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

Типы циклов

· For...Next: использует счетчик. Повторяет набор инструкций указанное число раз;

· For Each...Next: повторяет набор инструкций для каждого объекта семейства;

· Do...Loop: повторяет набор инструкций, пока условие имеет значение True или пока оно не примет значение True.

Инструкция For...Next

Инструкция For...Next используется для выполнения наборов инструкций указанное число раз. Циклы For используют в качестве счетчика переменную, значение которой увеличивается или уменьшается при каждом выполнении цикла.

 

For счетчик = начало To конец [ Step шаг]

[инструкции]

[Exit For]

[инструкции]

Next [счетчик]

 

Синтаксис инструкции For…Next содержит следующие элементы:

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

начало - обязательный элемент. Начальное значение переменной счетчик;

конец - обязательный элемент. Конечное значение переменной счетчик;

шаг - необязательный элемент. Значение, на которое изменяется счетчик при каждом выполнении тела цикла. Если это значение не задано, по умолчанию шаг равен единице;

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

 

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

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

Альтернативный способ выхода из цикла предоставляет инструкция Exit For. В любых местах цикла может размещаться любое число таких инструкций. Инструкция Exit For часто применяется вместе с проверкой некоторого условия (например, If...Then). Эта инструкция передает управление инструкции, непосредственно следующей за инструкцией Next.

Допускается организация вложенных циклов For...Next (один цикл For...Next располагается внутри другого). Счетчик каждого цикла должен иметь уникальное имя. Допускаются следующие конструкции:

 

For I = 1 To 10

For J = 1 To 10

For K = 1 To 10

...

Next K

Next J

Next I

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

Пример 11

В данном примере инструкция For...Next используется для создания строки, содержащей 10 наборов по 10 цифр (от 0 до 9); каждый набор отделяется от следующего одним пробелом. Внешний цикл использует переменную-счетчик, которая уменьшается на единицу при каждом выполнении цикла.

 

Sub цикл1()

Dim Words, Chars, MyString

For Words = 10 To 1 Step -1 ' Цикл выполняется 10 раз.

For Chars = 0 To 9 ' Цикл выполняется 10 раз

MyString = MyString & Chars ' Добавляет цифру в конец строки.

Next Chars ' Увеличивает счетчик

MyString = MyString & " " & vbCr ' Добавляет пробел.

MsgBox (MyString)

Next Words

End Sub

 

Пример 12

Данная процедура заставляет компьютер подавать звуковой сигнал 50 раз. Инструкция For определяет счетчик x и его начальное и конечное значения. Инструкция Next изменяет счетчик с шагом 1.

 

Sub Beeps()

For x = 1 To 50

Beep

Next x

End Sub

 

Имеется возможность увеличивать или уменьшать значение счетчика на указанную величину с помощью ключевого слова Step.

 

Пример 13

В данном примере счетчик j изменяется с шагом 2 при каждом выполнении цикла. По завершении цикла total равняется сумме 2, 4, 6, 8 и 10.

 

Sub TwosTotal()

For j = 2 To 10 Step 2

total = total + j

Next j

MsgBox "Сумма равна " & total

End Sub

 

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

Пример 14

В данном примере счетчик myNum уменьшается на 2 при каждом выполнении цикла. По окончании цикла total равняется сумме 16, 14, 12, 10, 8, 6, 4 и 2.

 

Sub NewTotal()

For myNum = 16 To 2 Step -2

total = total + myNum

Next myNum

MsgBox "Сумма равна " & total

End Sub

Пример 15

Данная программа перебирает все ячейки диапазона А1:D10 на листе «Лист1». Если какая-то ячейка содержит значение меньше, чем 0.5, оно заменяется нулем.

 

Sub RoundTo()

Dim rw, col

For rw = 1 To 10 ' Цикл выполняется 10 раз

For col = 1 To 4 ' Цикл выполняется 4 раза

If Worksheets("Лист1").Cells(rw, col) < 0.5 Then

Worksheets("Лист1").Cells(rw, col).Value = 0

End If

Next col

Next rw

End Sub

 

Указание имени счетчика после инструкции Next не обязательно. В предыдущих примерах имя счетчика было указано для облегчения чтения программы.

Инструкция Exit For дает возможность завершения инструкции For...Next до того, как счетчик достигнет своего конечного значения. Например, если возникает ошибка, для ее проверки можно использовать инструкцию Exit For в блоке True инструкции If...Then...Else или инструкции Select Case. Если ошибки нет, инструкция If...Then...Else имеет значение False, и выполнение цикла продолжается, как ожидалось.

Пример 16

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

 

Sub FillArrayMulti()

Dim int_I As Integer, int_J As Integer

Dim МаsMulti(1 To 5, 1 To 10) As Single

 

' Заполнение массива.

For int_I = 1 To 5

For int_J = 1 To 10

МаsMulti (int_I, int_J) = int_I * int_J

Next int_J

Next int_I

End Sub

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: