Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Управляющие конструкции

С помощью управляющих конструкций определяются последовательности выполнения программы. Без них все операторы программы будут выполняться слева направо и сверху вниз. Иногда случается, что нужно много раз выполнить определенный набор инструкций или же решить задачу другим способом, который будет зависеть от значений переменных или параметров, задаваемых пользователем в процессе выполнения. Именно в подобных случаях и помогают управляющие конструкции управления, а также циклы.

В VBA используются следующие конструкции принятия решений:

  • If ... Then;
  • If ... Then ... Else;
  • Select Case.

Конструкция If . . . Then

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

  • В одной строке программы: If Then .
  • В нескольких строках программы:

If Then

End If

Замечание 1

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

Приведем два эквивалентных оператора, которые записаны разными способами:

  1. If A > = B Then A = A ∙ 2
  2. If A > = B Then

A = A ∙ 2

End If

Замечание 2

Отметим, что синтаксис оператора If...Then для одной строки не использует оператор End If. В случае, когда условие истинно, для выполнения последовательности операторов будем использовать блоковую конструкцию If ... Then ... End If.

Приведем пример:

Пример 1

If A > = B Then

A = A ∙ 2

Sheets("Задача").Range("B2") = A

Rem На листе Задача в ячейку B2 поместить значение А

End If

«Управляющие конструкции» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Найди решение своей задачи среди 1 000 000 ответов
Найти

При ложном условии операторы, стоящие после ключевого слова Then, не будут выполняться, а управление будет передано следующей строке (или строке, стоящей после оператора End If в блочной конструкции).

Конструкции If . . . Then . . . Else и If ... Then ... ElseIf

В управляющей конструкции If... Then ... Else используется несколько блоков операторов, причем выполняться будет только один в зависимости от условия:

If Then

...

Else

...

End If

В начале проверяется условие. В случае его истинности выполняется соответствующий блок операторов и затем передается управление инструкции, которая следует за оператором End If. В обратном случае будет выполняться блок операторов, стоящий после ключевого слова Else. Конструкция If...Then...ElseIf представляет собой частный случай конструкции If...Then...Else, который применяют в случае вложенности таких конструкций.

Рассмотрим пример сравнения двух чисел:

Пример 2

Sub Задача1()

Dim Rez As String

a = (InputBox("Введи a", "Ввод данных", 0))

Dim a As Single, b As Single

Ввод данных", 0))

b = (InputBox("Введи b", "Ввод данных", 0))

If a

Rez = "a

ElseIf a = b Then

Rez = "a = b"

Else Rez = "a > b"

End If

Msgbox Rez,64,"Информация"

End Sub

В управляющей конструкции If...Then может использоваться любое количество блоков ElseIf. Но если оно будет большим, то конструкция If...Then станет довольно громоздкой и неудобной. В таком случае рекомендуется применить другую конструкцию принятия решения — Select… Case.

Конструкция Select… Case

Управляющая конструкция Select…Case представляет собой альтернативный вариант управляющей конструкции If...Then...Else. С ее помощью можно сделать код легко читаемым при наличии нескольких вариантов выбора. В конструкции Select…Case используется единственное проверяемое выражение, вычисляемое лишь один раз при входе в эту конструкцию. В дальнейшем полученный результат сравнивается со значениями, которые задаются в операторах Case, до тех пор, пока они не совпадут. Данная управляющая конструкция имеет следующий синтаксис:

Select Case

[Case список_выражений 1

[блок_операторов 1]]

[Case список_выражений 2

[блок_операторов 2]]

...

[Case Else

[блок_операторов n]]

End Select

В каждом списке выражений может содержаться одно или несколько значений. В последнем случае они будут отделяться друг от друга запятыми. При этом в каждом блоке операторов может содержаться несколько операторов или же ни одного. В случае, когда проверяемое выражение будет соответствовать значениям нескольких операторов Case, то будут выполняться операторы, которые совпадут с первым оператором Case из всех найденных соответствий. Блок операторов Case…Else (он не является обязательным) будет выполняться в случае, когда не будет найдено ни одного соответствия проверяемого значения выражения и значений из всех списков операторов Case. Еще раз отметим, что управляющая конструкция Select…Case вычисляет выражение только один раз при входе в нее, тогда как в конструкции If...Then...Else вычисляются различные выражения для каждого оператора ElseIf. Конструкцию If...Then...Else можно заменить конструкцией Select…Case, только если оператор If и каждый оператор Elself вычисляют одно и то же выражение.

Операторы цикла

Операторы цикла используются при программировании повторяющихся фрагментов, т.е. при реализации циклических алгоритмов.

Имеются две разновидности данных операторов: оператор цикла с фиксированным числом повторений и оператор цикла с переменным числом повторений, которое зависит от условий.

Оператор цикла For (с фиксированным числом повторений)

Синтаксис:

For переменная = M1 To M2 [Step M3]

операторы

Next

Где M1, M2, M3 — выражения. Оператор цикла повторяет выполнение группы операторов до тех пор, пока переменная (счетчик) изменяется от начального значения М1 до конечного М2 с указанным шагом М3. Если шаг не указан, то подразумевается, что он равен 1.

Рассмотрим пример:

Пример 3

Sum = 0

For I = 1 To 31

Sum = Sum + Sheets("Температура").Cells(I,1)

Next

ST = Sum/31

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

Оператор цикла While (с переменным числом повторений)

Синтаксис:

Do While

Loop

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

Рассмотрим пример:

Пример 4

Rem - удвоение числовых переменных массива А с четными номерами индексов и вывод на лист «Цикл».

Dim A(10) As Byte, i As Byte, j As Byte

Rem Массив надо заполнить

i = 0

j = 0

Do While i

j = j + 1

i = i + 2

A(i) = A(i) * 2

Sheets("Цикл").Cells(j, 1) = A(i)

Loop

Оператор безусловного перехода GoTo

При использовании оператора безусловного перехода GoTo всегда изменяется порядок выполнения операторов в процедуре или функции VBA без проверки каких-либо условий. Синтаксис оператора GoTo:

GoTo , где – это любая допустимая метка в той же процедуре или функции, содержащая оператор GoTo.

Пример использования оператора GoTo:

Пример 5

'Программа запрашивает ввод значения пока не будет введено четное число

Sub sample6()

getValue: 'метка

value = InputBox(prompt:="Введите четное число")

If (value Mod 2 0) Then GoTo getValue

End Sub

Дата написания статьи: 05.05.2017
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot