Партнерка на США и Канаду по недвижимости, выплаты в крипто
- 30% recurring commission
- Выплаты в USDT
- Вывод каждую неделю
- Комиссия до 5 лет за каждого referral
End Sub
В том случае, когда блок операторов нужно выполнять после проверки не одного, а нескольких условий, следует использовать такую конструкцию If…Then:
If условие1 Then
операторы1
ElseIf условие2 Then
операторы2
ElseIf условие3 Then
операторы3
...
[Else
операторыN]
End If
Если первое условие истинно (т. е. логическое выражение условие1 имеет значение Тrие), то выполняется блок операторы1. Если оно ложно, то проверяется второе условие, находящееся после ключевого слова ElseIf. При истинности второго условия (т. е. если логическое выражение условие2 имеет значение Тrие) выполняется блок операторы2, и т. д. Если ни одно из условий не являются истинным, то выполняется блок операторыN, расположенный после ключевого слова Else. Далее выполняется оператор, следующий за служебным словосочетанием End If, вне зависимости от того, какой из блоков (операторы1, операторы2,... или операторыN) выполнен.
Иногда можно пользоваться функцией условием
переменная = IIf(условие, выражение1, выражение2)
В ней условие представляет собой логическое выражение, а выражение1 и выражение2 — арифметические или логические выражения или строки, которые можно рассматривать как выражения.
Функция IIf возвращает в программу значение выражения выражение1 или выражение2 в зависимости от того, какое значение принимает логическое выражение ‑ Тrие или False.
Пример
Public Sub IT4()
Dim intA As Integer
Dim strA As String
intA = 6
strA = IIf(intA Mod 2 = 0, "Четнoe", "Heчeтнoe")
End Sub
Примером может служить выражение К=IIf(Mx<0, 1,-1).
Однако надо помнить, что оба выражения внутри оператора должны всегда иметь решения. Например, если в выражении стоят не конкретные числа, а исполняемые операторы и какая-либо переменная в них определяется начальным условием, то оператор всегда будет выдавать ошибку, так как не сможет вычислить оператор полностью – X=IIf(Y<>0, Z/Y, Z). В данной ситуации программа всегда будет пытаться поделить Z на Y и при равенстве Y нулю будет выводиться ошибка. Это условие обязательно надо писать в нормальной структуре If.
Вторая конструкция принятия решений (или ветвления) – Select Case, называемая оператором выбора:
Sеlесt Саsе выражение
Саsе значение1
операторы1
Саsе значение2
операторы2
…
[Саsе Е1sе
операторыN]
Еnd Sеlесt
В ней выражение — арифметическое или логическое выражение или строка. Работает оператор выбора следующим образом.
Если выражение принимает значение значение1, то выполняется блок операторов операторы1. Если выражение принимает значение значение2, то выполняется блок операторы2 и т. д. Если выражение не равно ни одному из приведенных значений, то выполняется блок операторыN, находящийся после служебного словосочетания Саsе Еlsе. Далее выполняется оператор, следующий за строкой Еnd Sеlесt, вне зависимости от того, какой из блоков (операторы1, операторы2, ... или операторыN) выполнен.
В том случае, когда при нескольких значениях выражения выражение необходимо выполнить один и тот же блок операторов, эти значения нужно перечислить после ключевого слова Саsе, разделяя их запятыми.
Пример
Public Sub Bыбop ()
Dim x As Integer
x = 1
Select Case 2 * x + 1
Case 1
x = x + 1
Case 2, 3, 4
x = 10
Case Else
x = 20
End Select
x = x Mod 3
End Sub
Циклы в программе
Часто в программах надо повторить часть операторов несколько раз. Для многократного выполнения блока операторов используется один из трех операторов цикла – For … Next:, While … Wend или Dо … Lоор.
Часто заранее известно сколько раз надо повторить цикл, например, надо ввести данные в массив из 5 элементов, но бывают случаи, когда число повторений не известно, например, надо найти первую пустую ячейку на листе. Иногда возникают ситуации, когда блок внутри цикла может быть просто обойден (например, первая ячейка пустая).
Цикл For … Nехt используется в том случае, когда количество выполнений заданного блока операторов известно заранее. Алгоритм цикла представлен на рис.10. Данная конструкция имеет следующий синтаксис:
For счетчик = начало To конец [Step шаг]
onepaтopы
Next [счетчик]
При положительном значении величины шаг цикл For … Next работает следующим образом.
Переменной счетчик сначала присваивается значение начало. Далее проверяется условие счетчик > конец. Если результатом проверки этого условия является значение Тruе, то происходит окончание работы цикла. При этом операторы цикла операторы ни разу не выполняются.
Если результатом проверки условия счетчик > конец является False, то в этом случае операторы цикла выполняются первый раз. После этого происходит переход на начало цикла. Далее значение переменной счетчик увеличивается на величину шага шаг, после чего снова проверяется условие счетчик > конец. Если результатом является Falsе, то операторы цикла выполняются второй раз, и т. д.
Выполнение цикла оканчивается, когда результатом проверки условия счетчик > конец становится Тruе. По окончании цикла выполняется оператор, следующий за циклом, т. е. за ключевым словом Next.
Пример. Программа расчета факториал числа 6 имеет следующий вид:
Public Sub Фaкториал1()
Dim I As Byte
Dim F As Long
F = 1
For I = 1 To 6 Step 1
F = F * I
Next I
End Sub
Напомним, что факториал целого положительного числа n обозначается n! и (согласно определению) n! равняется произведению целых чисел от 1 до n: n! = 1 *2 * ... *n.
Для результата отводится ячейка, в которую до начала простого цикла записывается 1, в данном случае F=1.
Пример. Второй вариант программы расчета 6!
Public Sub Фaкториал2()
Dim I As Byte
Dim F As Long
F = 1
For I = 6 To 1 Step -1
F = F * I
Next I
End Sub
В случае отсутствия ключевого слова Step шаг изменения переменной счетчик полагается равным единице.
В качестве параметров цикла начало, конец и шаг можно использовать не только числа, но и арифметические выражения. Важно, чтобы к моменту выполнения цикла For … Next все переменные в этих арифметических выражениях имели числовые значения (были определены).
Зачастую требуется досрочно выйти из цикла. В этом случае цикл For … Next записывается в виде
For счетчик = начало To конец [Step шаг]
onepaтopы1
If условие Then Exit For
onepaтopы2
Next [счетчик]
Досрочное окончание цикла обеспечивается оператором, обозначаемым служебным словосочетанием Exit For. Работает цикл следующим образом.
При каждом значении переменной счетчик после выполнения блока операторы1 компьютер рассчитывает значение логического выражения условие. Если это значение равно False, то работа цикла продолжается. В противном случае работа цикла оканчивается: блок операторы2 не выполняется, а осуществляется переход на оператор, следующий за циклом.
Пример. Четвертый вариант программы расчета 6!
Public Sub Фaктopиал4()
Dim I As Byte
Dim F As Long
F = 1
For I = 1 To 13 Step 1
F = F * I
If I = 6 Then Exit For
Next I
End Sub
Часто в примерах встречается задача накопления суммы, которая решается с помощью оператора цикла. Для результата, как и в случае вычисления произведения, отводится ячейка, в которую перед началом простого цикла записывается ноль, например S=0.
Сумма накапливается в ячейке S путем многократного выполнения оператора присваивания S=S + слагаемое, который располагается внутри простого цикла.
Результат получается в ячейке S по окончании работы простого цикла, т. е. печать S и другие действия с S выполняются после оператора Next.
Пример
Найдите сумму слагаемых вида 5х2, для х, изменяющегося от 5 до 15 с шагом 0,3.
Public Sub Sum()
S=0
For x = 5 To 15 Step 0.3
S=S+5*x^2
Next x
End Sub
Существуют два варианта циклов – первый, который мы подробно рассмотрели ранее, выполняется по счетчику, определяемому в операторе.
Второй вариант оператора – перебор всех объектов в коллекции (это все листы книги, ячейки листа или выделенного диапазона и др.). Этот оператор часто используется для работы со всеми листами книги, которые описаны коллекцией «Sheets» или других объектов.
Записывается оператор следующим образом:
For each Sh in ActiveWorkbook.Sheets
…
Next
Здесь нет в конце имени счетчика, переменная Sh является объектом коллекции.
Цикл применяется в том случае, когда число выполнений операторов цикла заранее неизвестно. Синтаксис этого цикла:
While условие
oпepaторы
Wend
Работа цикла While … Wend начинается с расчета значения логического выражения условие. Если условие = False, то работа цикла заканчивается, т. е. осуществляется переход на оператор, расположенный после ключевого слова Wend. Если условие = Тruе, то выполняются операторы цикла операторы. После этого опять рассчитывается значение логического выражения условие, и т. д.
Пример. Пятый вариант программы расчета 6!
Sub Факториал5()
Dim I As Byte
Dim F As Long
F = 1: I = 1
While I <= 6
F = F * I
I = I + 1
Wend
End Sub
Цикл Do … Lоор, как и цикл While … Wend, применяется, когда число выполнений операторов цикла заранее неизвестно. Он имеет два варианта оформления – с предусловием и постусловием (рис.11).

Рис.11. Алгоритмы цикла Do … Loop с предусловием
и постусловием, соответственно.
Для проверки условий используются две формы, которые оформляются служебными словами – While (Пока), когда цикл выполняется пока условие «Истина» и Until (До тех пор), в нем цикл выполняется пока условие «Ложь». Это позволяет легко находить варианты условий. Существует четыре разновидности данной конструкции.
Первой разновидностью является цикл Do While … Lоор, имеющий следующий синтаксис:
Do While условие
операторы
Loop
Работа цикла Do While … Lоор начинается с расчета значения логического выражения условие. Если условие = False, то работа цикла оканчивается, т. е. осуществляется переход на оператор, расположенный после ключевого слова Lоор. Если условие = Тruе, то выполняются операторы цикла операторы. После этого опять рассчитывается значение логического выражения условие, и т. д.
Цикл Do While … Lоор эквивалентен рассмотренному ранее циклу While … Wend.
Пример. Шестой вариант программы расчета 6!
Sub Факториал6()
Dim I As Byte
Dim F As Long
F = 1: I = 1
Do While I <= 6
F = F * I
I = I + 1
Loop
End Sub
Пример. Программа «шагания» по оси координат:
Sub Stepsl()
Dim x As Single
Dim h As Single
h = 0.5 'величина шага равна 0.5
x = 44 'начальное значение х равно 44
Do While x < 55 'конечное значение х равно 55
x = x + h 'значение х увеличивается на h
Loop ‘do while… - делай пока выполняется …
End Sub
Упрощенная форма цикла с предусловием и проверкой по While записывается в форме While X<10: X=X+1: Wend
Вторая разновидность конструкции Do … Lоор ‑ цикл Do Until … Lоор. Синтаксис этого цикла:
Do Until условие
операторы
Lоор
Работа цикла Do Until … Lоор начинается с расчета значения логического выражения условие. Если условие = Тruе, то работа цикла оканчивается, т. е. осуществляется переход на оператор, расположенный после ключевого слова Lоор. Если условие = False, то выполняются операторы цикла операторы. После этого опять рассчитывается значение логического выражения условие, и т. д.
Пример. Второй вариант программы «шагания» по оси координат:
Sub Steps2()
Dim x As Single
Dim h As Single
h = 0.5 'величина шага равна 0.5
x = 44 'начальное значение х равно 44
Do Until x >= 55 'конечное значение х равно 55
x = x + h 'значение х увеличивается на h
Loop 'do until… - делай до выполнения
End Sub
Видно, что в циклах Do While … Lоор и Do Until … Lоор существует ситуация, когда операторы цикла не выполняются ни разу, т. к. условие окончания цикла проверяется перед выполнением этих операторов.
Третья разновидность конструкции Do … Loop ‑ цикл Do … Lоор While ‑ имеет синтаксис
Do
операторы
Loop While условие
Работа цикла Do … Lоор While начинается с выполнения операторов цикла операторы. После этого рассчитывается значение логического выражения условие. Если условие = False, то работа цикла оканчивается. В противном случае опять выполняются операторы цикла, и т. д.
Пример. Третий вариант программы «шагания» по оси координат:
Sub Steps3()
Dim x As Single
Dim h As Single
h = 0.5 'величина шага равна 0.5
x = 44 'начальное значение х равно 44
Do
x = x + h 'значение х увеличивается на h
Loop While x < 55 'конечное значение х равно 55
End Sub
Четвертая разновидность конструкции Do … Loop ‑ цикл Do … Lоор Until ‑ имеет синтаксис
Do
операторы
Loop Until условие
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 |


