Vba условия. Операторы ветвления VBA: простой выбор

Условный оператор

Условный оператор VBA позволяет проверить некоторое условие и в зависимости от результатов проверки выполнить то или иное действие. Таким образом, условный оператор – это средство ветвления вычислительного процесса.

В VBA существует 2 типа условного оператора: линейный и блочный.

1. Линейный условный оператор используется для того, чтобы выполнить какой-либо один оператор, если некоторое условие будет истинным.

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

Структура безальтернативного условного оператора (сокращенный вариант):

If <условие> Then <оператор 1>

Структура альтернативного условного оператора (полный вариант):

If <условие> Then <оператор 1> Else <оператор 2>

где

If , Then , Else - зарезервированные слова (если, то, иначе);

<условие> - произвольное выражение логического типа;

<оператор 1>, <оператор 2> - любые операторы языка VBA .

Работа. Вначале вычисляется условное выражение <условие>. Если результат есть True (истина), то выполняется <оператор 1>, а <оператор 2> пропускается. Если результат есть False (ложь), наоборот, <оператор 1> пропускается, а выполняется <оператор 2>.

2. Блочный условный оператор используется в случае истинности условия необходимо выполнить несколько программных операторов (блок операторов). Блочный оператор имеет две формы: безальтернативный, альтернативный.

Структура безальтернативного блочного оператора (сокращенный вариант )

If <условие> Then

<оператор1>

<оператор2>

…………….

<оператор n >

End If

где

End If - указывает на окончание блока оператора If .

Структура альтернативного блочного оператора:

If <условие> Then

<оператор1>

<оператор2>

…………….

<оператор n >

Else

<оператор1>

<оператор2>

…………….

<оператор n >

End If

Пример 1.

Постановка задачи. Создать в стандартном модуле пользовательскую процедуру вычисления уравнения вида ax 2 + bx + c = 0.

1. Исходные данные:

a , b , c  R

Результат: х1, х2  R .

2.Набрать в стандартном модуле проекта следующую пользовательскую процедуру:

Private Sub yravnenie ()

a = InputBox("a=", a)

b = InputBox("b=", b)

c = InputBox("c=", c)

d = b ^ 2 - 4 * a * c

If d >= 0 Then

x1 = (-b + Sqr(d)) / (2 * a)

x2 = (-b - Sqr(d)) / (2 * a)

MsgBox (x1)

MsgBox (x2)

Else

MsgBox (" Решений нет ")

End If

End Sub

Альтернативный блочный оператор If применяется в тех случаях, когда при выполнении условия необходимо осуществить один набор программных операторов, а при невыполнении – другой.

Операторы IF могут быть вложенными друг в друга. Такое вложение операторов применяется, если нужно проверить какое-либо условие при другом условии, которое является истинным.

Формат вложенного оператора If :

If <условие1> Then

If <условие2> Then

<оператор1>

<оператор2>

…………….

<оператор n >

Else

<оператор1>

<оператор2>

…………….

< оператор n>

End If

End If

Пример 2.

Постановка задачи. Создать в стандартном модуле пользовательскую функцию нахождения максимального среди трех заданных чисел y 1 = a +2* b ; y 2 = a * b + c ; y 3 = c 2 + 1.

Технология выполнения задания:

1. Исходные данные:

a , b , c  R

Результат: Max  R.

2.Набрать в стандартном модуле проекта следующую пользовательскую функцию:

Function y (a,b,c)

y1 = a+2*b

y2 = a*b+c

y3 = c^2+1

If y1 > y2 Then

If y1 > y3 Then y = y1 Else y = y3

Else

If y2 > y3 Then y = y2 Else y = y3

End If

End Function

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

При использовании вложенных операторов If важно не перепутать варианты сочетания условий. Нужно помнить правило: альтернатива Else считается принадлежащей ближайшему оператору If , не имеющему ветви Else .

В VBA предусмотрена конструкция для работы с несколькими операторами If . Эти операторы применяются в случаях, когда необходимо рассмотреть еще несколько условий в дополнение к исходному. Для этого служит конструкция: If … Then … ElseIf . В отличие от вложенных операторов конструкция с несколькими операторами If позволяет проверить дополнительное условие, если исходное условие принимает значение False .

Формат записи:

If <условие1> Then

<оператор1>

ElseIf <условие2> Then

<оператор2>

Else

<.оператор3>

EndIf

Пример 3.

Постановка задачи. Менеджеру по продажам необходимо разработать функцию, позволяющую рассчитывать комиссионные. Процент комиссионных зависит от объема проданного товара и начисляется по следующему правилу, представленному в таблице 15.

Правила расчета комиссионных

Объем продаж за неделю, р.

Комиссионные, %

От 0 до 9999

От 10000 до 19999

От 20000 до 39999

Более 40000

Технология выполнения задания:

1. Исходные данные:

Продажи  Z .

Результат: Комиссионные  R .

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

Function Комиссионные (Продажи)

If Продажи <= 9999 Then

Комиссионные = Продажи * 0.08

ElseIf Продажи <= 19999 Then

Комиссионные = Продажи * 0.1

ElseIf Продажи <= 39999 Then

Комиссионные = Продажи * 0.12

Else

Комиссионные = Продажи * 0.14

End If

End Function

3. Вычислить.

До сих пор рассматривались процедуры и функции, которые VBA выполняет в линейном порядке - VBA начинает выполнение кода с первого оператора после строки объявления процедуры (функции) и продолжает выполнять каждый оператор построчно до тех пор, пока не будет достигнут оператор End Sub (End Function). Такой линейный алгоритм можно представить нижеследующей блок-схемой:

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



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

Простейшими операторами условного перехода являются операторы If..Then; If..Then..Else . Первый оператор позволяет выбирать единственную ветвь процедуры (левая блок-схема), тогда как второй дает возможность выбирать из двух альтернативных ветвей кода процедуры (правая блок-схема) на основе оценки того, является ли условие равным True или False.


Синтаксис If..Then

Вариант 1:
If Condition Then Statements

Вариант 2:
If Condition Then
Statements
End If


Condition - логическое выражение;

Statements


Первый вариант требует написания оператора в одну строку, при этом в секции Statements можно указывать несколько операторов, разделяя их двоеточием.

Логика работы следующая: VBA сначала оценивает логическое выражение, представленное в секции Condition; если это логическое выражение равно True то выполняется оператор (операторы) секции Statements; затем VBA продолжает выполнение кода следующего за строкой If..Then (Вариант 1) или за ключевыми словами End If (Вариант 2). Если же логическое выражение равно False, то операторы секции Statements пропускаются и выполняется код, следующий за этой секцией.


Ниже приведен листинг элементарного использования первого варианта написания If..Then:






А теперь - второй вариант:



Обратите внимание, что операторы секции Statements написаны с использованием отступа (используется табуляция). Это важный момент. Следует сразу приучать себя к подобному оформлению программного кода - это повышает его удобочитаемость и значительно облегчает поиск ошибок.


Синтаксис If..Then..Else

Вариант 1:
If Condition Then Statements Else ElseStatements

Вариант 2:
If Condition Then
Statements
Else
ElseStatements
End If


Condition - логическое выражение;

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


По аналогии с If..Then - первый вариант требует написания оператора в одну строку, при этом в секциях Statements и ElseStatements можно указывать несколько операторов, разделяя их двоеточием.

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

Логика работы следующая: VBA сначала оценивает логическое выражение, представленное в секции Condition; если это логическое выражение равно True то выполняется оператор (операторы) секции Statements; затем VBA продолжает выполнение кода следующего за строкой If..Then (Вариант 1) или за ключевыми словами End If (Вариант 2). Если же логическое выражение равно False, то выполняются операторы секции ElseStatements.

В Visual Basic for Application (VBA) существует несколько способов изменения порядка выполнения инструкций. Управляющие структуры VBA во многом схожи с подобными структурами в других языках программирования.

Основные управляющие структуры VBA:

  • If Then Else "End If
  • For Next
  • While Wend
  • Do Loop
  • Select Case "End Select
  • For Each Next

    Управляющая инструкция If Then Else "End If
    Эта инструкция изменяет порядок выполнения инструкций в зависимости от результатов проверки заданного условия (или набора условий)

    Пример:

    Sub TestIfThen()

    iData = "pashulka"

    If iData = "Excel" Then
    MsgBox "Этого сообщения Вы не увидите никогда!!!"
    ElseIf iData = "Office" Then
    MsgBox "К сожалению, этого сообщения Вы тоже не увидите!!!"
    Else
    MsgBox "Это сообщение появится в любом случае",iData
    End If

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

    В инструкции If Then Else "End If ключевые слова ElseIf и Else являются необязательными.

    Управляющая инструкция For Next
    Эта инструкция позволяет выполнять определённые действия нужное количество раз. Такие инструкции, как правило, называют циклами.

    Пример:

    Sub TestForNext()

    For iCount = 1 To 100 Step 2
    i = i + 1
    Next

    Комментарии:
    For
    iCount - переменная, определяющая число повторений цикла.
    1 - начальное значение счётчика
    To - ключевое слово, разделяющее начальное и конечное значение счётчика
    100 - конечное значение счётчика
    Step - ключевое слово, определяющее шаг счётчика
    2 - шаг счётчика (число)
    Next - ключевое слово, при достижении которого значение счётчика изменяется на величину шага, после чего управление опять переходит в начало цикла.
    MsgBox

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

    важно Шаг счётчика обязательно должен быть числом. Если шаг счётчика указан в виде отрицательного числа, то тогда значение счётчика будет с каждым циклом будет уменьшаться.

    Пример, с обратным отсчётом:

    Sub TestForNext2()

    For iCount = 300 To 1 Step -3
    i = i + 1
    If iCount = 153 Then Exit For
    Next iCount

    MsgBox "Число повторений: " & i

    Обратите внимание на:
    If iCount = 153 Then - в этом VBA коде мы применили уже известную нам инструкцию If Then Else
    Exit For
    Next iCount - в коде присутствует переменная (счётчик), который располагается после ключевого слова. Подобный синтаксис используется, как правило, для визуального определения конца цикла, если в VBA коде присутствует достаточно много подобных инструкций.

    Управляющая инструкция While Wend
    Эта инструкция позволяет выполнять определённые действия до тех пор, пока соблюдается заданное условие.

    Пример:

    Sub TestWhileWend()

    While iCount iCount = iCount + 1
    Wend

    Комментарии:
    While - ключевое слово, означающее начало цикла
    iCount - условие, при соблюдении которого будет выполняться эта инструкция
    Wend
    MsgBox - сообщение о количестве повторений

    Управляющая инструкция Do Loop
    Эта инструкция позволяет выполнять определённые действия не только до тех пор, пока соблюдается заданное условие, но и наиборот, пока не будет выполнено заданное условие.

    Пример:

    Sub TestDoLoop()

    Do Until iCount >= 100
    iCount = iCount + 1
    Loop

    MsgBox "Число повторений: " & iCount

    Комментарии:
    Do - ключевое слово, означающее начало цикла
    Until - ключевое слово, означающее наличие условия
    iCount >= 100 - условие, при соблюдении которого будет выполняться эта инструкция
    Loop - ключевое слово, означающее конец цикла
    MsgBox - сообщение о количестве повторений

    Sub TestDoLoop2()

    Do
    iCount = iCount + 1
    If iCount = 50 Then Exit Do
    Loop Until iCount = 100

    MsgBox "Число повторений: " & iCount

    Обратите внимание на:
    If iCount = 50 Then - в этом VBA коде мы опять применили уже известную нам инструкцию If Then Else
    Exit Do - инструкция означающая досрочный выход из цикла
    iCount = 100 - условие, при соблюдении которого будет выполняться эта инструкция

    Примечание:
    Условие заданное в конце цикла гарантирует, что он будет выполнен хотя бы один раз. Будьте осторожны с инструкциями While Wend, Do Loop, так как при некорректном задании условия, Вы можете получить практически perpetuum mobile.

    Управляющая инструкция Select Case "End Select
    Эта инструкция в зависимости от результатов значения переменной или выражения выполняет один из нескольких фрагментов кода.

    Пример:

    Sub TestSelectCase()

    Select Case iNumeric
    Case 1

    Case 2, 5
    MsgBox "Это сообщение Вы не должны увидеть"
    Case 10 To 13
    MsgBox "Это сообщение Вы не должны увидеть"
    Case Is > 14
    MsgBox "Именно это сообщение Вы и должны увидеть"
    Case Else
    MsgBox "Это сообщение появится, если переменная будет End Select

    Комментарии:
    Select Case
    iNumeric - переменная или выражение, значение которой определяет выбор фрагмента VBA кода для выполнения
    Case 1 - первый вариант значения для сравнения.
    Если значение переменной совпадёт с ним, то будет выполнен фрагмент кода следующий за Case, но до следующего ключевого Case, затем инструкция завершит свою работу. В противном случае проверка продолжится.
    Case 2, 5 - второй вариант значения.
    Case 10 To 13 - третий вариант значения.
    Case Is > 14 - четвёртый вариант значения.
    MsgBox - сообщение, которое будет выведено в данном случае
    Case Else - ключевые слова, означающее выполнение кода, если ни одно из предыдущих вариантов не совпало.
    End Select - ключевое слово, означающее конец инструкции

    В инструкции Select Case "End Select ключевое слово Case Else является необязательным.

    Управляющая инструкция For Each Next
    Эта инструкция позволяет выполнять определённые действия с каждым об"ектом семейства или элементом массива.

    Пример с об"ектом Range:

    Sub TestForEachNextRange()


    i = i + 1
    iCell.Value = "Ячейка # " & i
    Next

    MsgBox "Число ячеек: " & i

    Комментарии:
    For Each - ключевые слова, означающее начало инструкции
    iCell - переменная, которой присваиваются значения элементов группы (массива или семейства) Для работы с элементами массива переменная должна принадлежать к типу Variant.
    In - ключевое слово, отделяющее переменную от группы
    Range("A1:C5") - группа, т.е. массив или семейство об"ектов. Количество повторений цикла зависит от числа элементов, входящих в группу. При первом выполнении цикла переменной присваивается значение самого первого элемента группы, а затем, всех последующих.
    Next - ключевое слово, при достижении которого управление опять переходит в начало цикла.
    MsgBox - сообщение о количестве элементов группы.

    В данном случае использовать подобный подсчёт числа ячеек в об"екте Range является не лучшим способом, так как у этого об"екта существует свойство, которое справится с этой задачей гораздо лучше: Об"ект Range: его свойства и методы


  • Пример манипуляции с об"ектом Range:

    Sub TestForEachNextRangeChanges()

    For Each iCell In Range("A1:C5")

    i = i + 1: iCell.Value = i

    If iCell.Value 5 Then
    iCell.Font.Size = 15
    iCell.Interior.ColorIndex = 50
    ElseIf iCell.Value = 13 Or iCell.Value = 5 Then
    iCell.Font.Size = 20
    iCell.Interior.ColorIndex = 3
    Else
    iCell.Clear
    End If

    Обратите внимание на:
    - в этом VBA коде для проверки значений находящихся в ячейке мы применили уже известную нам инструкцию If Then Else.
    - в зависимости от того какое условие прошло проверку, выполняется определённый фрагмент кода, который использует различные свойства об"екта Range.

    Пример с семейством WorkSheets:

    Sub TestForEachNextSheet()

    For Each iList In Worksheets
    i = i + 1
    iNameList = iNameList & Chr(10) & iList.Name
    Next

    MsgBox "Число рабочих листов: " & i & Chr(10) & _
    "Имена рабочих листов: " & iNameList

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

    Однострочная и многострочная конструкции оператора If...Then...Else и функция IIf, используемые в коде VBA Excel - синтаксис, компоненты, примеры.

    Оператор If...Then...Else

    Оператор If...Then...Else предназначен для передачи управления одному из блоков операторов в зависимости от результатов проверяемых условий.

    Однострочная конструкция

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

    Синтаксис однострочной конструкции If...Then...

    If [условие] Then [операторы]

    Компоненты однострочной конструкции If...Then...

    • условие True или False ;
    • операторы условие возвращает значение True ;

    Если компонент условие возвращает значение False , блок операторов конструкции If...Then...

    Пример 1

    Sub primer1() Dim d As Integer, a As String d = InputBox("Введите число от 1 до 20", "Пример 1", 1) If d > 10 Then a = "Число " & d & " больше 10" MsgBox a End Sub

    Многострочная конструкция

    Синтаксис многострочной конструкции If...Then...Else

    If [условие] Then [операторы] ElseIf [условие] Then [операторы] ---------------- Else [операторы] End If

    Компоненты многострочной конструкции If...Then...Else :

    • условие - числовое или строковое выражение, следующее за ключевым словом If или ElseIf и возвращающее логическое значение True или False ;
    • операторы - блок операторов кода VBA Excel, который выполняется, если компонент условие возвращает значение True .
    • пунктирная линия обозначает дополнительные структурные блоки из строки ElseIf [условие] Then и строки [операторы] ;
    • блок операторов после ключевого слова Else выполняется в любом случае, но структурный блок кода из строки Else и строки [операторы] не является обязательным и может быть пропущен.

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

    Самый простой вариант многострочной конструкции If...Then...Else :

    If [условие] Then [операторы] Else [операторы] End If

    Пример 2

    Sub primer2() Dim d As Integer, a As String d = InputBox("Введите число от 1 до 40", "Пример 2", 1) If d < 11 Then a = "Число " & d & " входит в первую десятку" ElseIf d > 10 And d < 21 Then a = "Число " & d & " входит во вторую десятку" ElseIf d > 20 And d < 31 Then a = "Число " & d & " входит в третью десятку" Else a = "Число " & d & " входит в четвертую десятку" End If MsgBox a End Sub

    Функция IIf

    Функция IIf проверяет заданное условие и возвращает значение в зависимости от результата проверки.

    Синтаксис функции

    IIf ([условие], [если True], [если False])

    Компоненты функции IIf

    • условие - числовое или строковое выражение, возвращающее логическое значение True или False ;
    • если True IIf , если условие возвратило значение True ;
    • если False - значение, которое возвращает функция IIf , если условие возвратило значение False .

    Пример 3

    Sub primer3() Dim d As Integer, a As String d = InputBox("Введите число от 1 до 20", "Пример 3", 1) a = IIf(d < 10, d & " - число однозначное", _ d & " - число двузначное") MsgBox a End Sub

    При нажатии кнопки «Cancel» или закрытии крестиком диалогового окна InputBox из примеров, генерируется ошибка, так как в этих случаях возвращает пустую строку. Присвоение пустой строки переменной d типа Integer вызывает ошибку. При нажатии кнопки «OK» диалогового окна, числа, вписанные в поле ввода в текстовом формате, VBA Excel автоматически преобразует в числовой формат переменной d.

    Основные операторы языка VBA

    Комментарии (0)

    3.1. Правила записи операторов

    При записи операторов необходимо придерживаться следующих правил:

    Каждый новый оператор записывается с новой строки.

    Чтобы записать несколько операторов на одной строке, их разделяют между собой двоеточием (:).

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

    3.2. Оператор присваивания

    Оператор присваивания используется, если какой-то переменной нужно присвоить новое значение. Он имеет следующий синтаксис:

    ИМЯ_ПЕРЕМЕННОЙ = ВЫРАЖЕНИЕ

    Сначала вычисляется выражение в правой части, а затем результат присваивается переменной, стоящей в левой части.

    Например . Записать с помощью оператора присваивания следующее математическое выражение:

    На VВА это выражение можно записать в виде следующего оператора:

    Y = a^(1/3)+(a^2+Exp(-b))/(Sin(a)^2-Log(b))

    3 .3. Операторы ввода-вывода

    3 .3.1. Оператор и функция MsgBox

    Оператор MsgBox осуществляет вывод информации в диалоговом окне и устанавливает режим ожидания нажатия кнопки пользователем.

    Он имеет следующий синтаксис:

    MsgBox Сообщение[,Кнопки][, Заголовок]

    Аргументы:

    Сообщение - обязательный аргумент, задающий в окне выводимое информационное сообщение. Может состоять из нескольких текстовых строк, объединенных знаком & . Использование в этом аргументе Chr(13) приводит к переходу на новую строку при выводе информации.

    Кнопки - значение этого аргумента определяет категории появляющихся в окне кнопок. От значения аргумента кнопкизависит также, появляется ли в окне какой-либо значок. Если не указано, какие кнопки необходимо отображать в окне сообщений, то используется значение по умолчанию, соответствующее кнопке ОК. В табл. 3.1 приведены возможные комбинации кнопок и значков в окне сообщений.

    Заголовок - задает заголовок окна.

    Функция MsgBox возвращает значение типа Integer, указывающее, какая кнопка была нажата в диалоговом окне.

    Таблица 3.1. Допустимые значения переменной кнопки

    Отображение

    Аргумент

    Кнопка ОК

    Кнопки ОК и Отмена

    Кнопки Да и Нет

    Кнопки Да, Нет и Отмена

    Кнопки Прекратить, Повторить и Игнорировать

    VbAbortRetryIgnore

    Кнопки Повторить и Отмена.

    Информационный знак

    Знак вопроса

    Знак восклицания

    Например . Вывести сообщение о текущей дате.

    MsgBox "Сегодня на календаре" & Date , "Внимание"

    В результате будет выведено следующее окно (рис.3.1).

    После щелчка по кнопке ОК окно сообщения закроется, и выполнение программы возобновится с оператора, стоящего непосредственно за вызовом MsgBox.

    3.3.2. Функция InputBox

    Функция InputBox осуществляет ввод значений переменных с помощью окна ввода и имеет следующий синтаксис:

    Имя_Переменной = InputBox(Сообщение[, Заголовок ] )

    Аргументы:

    Сообщение - обязательный аргумент. Задает в окне информационное сообщение, обычно поясняющее смысл вводимой величины

    Заголовок - задает заголовок окна.

    Например , Ввести значение переменной N с клавиатуры, предусмотрев значение по умолчанию равное 10.

    Для этого можно использовать следующий оператор:

    N = InputBox("Введите N", "Ввод исходных данных",10)

    В результате будет выведено следующее окно для ввода значения переменной N (рис.3.2).

    Если значение по умолчанию подходит пользователю, то после щелчка кнопки ОК окно ввода закроется, переменной N присвоится значение 10 и выполнение программы возобновится с оператора, стоящего непосредственно за вызовом InputBox .

    Если же значение по умолчанию не подходит пользователю, то перед щелчком по кнопке ОК необходимо ввести нужное значение переменной N.

    3 .4. Условный оператор IF

    Для реализации разветвляющегося вычислительного процесса в VBA используется оператор If…Then…Else, который представляет собой простейшую форму проверки условий. Он имеет следующий синтаксис:

    If УСЛОВИЕ Then ОПЕРАТОР_1 E lse ОПЕРАТОР_2

    ОПЕРАТОР_1 выполняется, если УСЛОВИЕ истинно, в противном случае выполняется ОПЕРАТОР_2 . При этом оператор If…Then…Else записывается в одну строку.

    УСЛОВИЕ - это выражение логического типа. Результат выражения всегда имеет булевский тип. Выражение может быть простым и сложным. При записи простых условий могут использоваться все возможные операции отношения, указанные в табл. 3.2.

    Таблица 3 .2. Логические отношения

    Операция

    Название

    Выражение

    Результат

    True, если А равно В

    True, если А не равно В

    True, если А,больше В

    True, если А меньше В

    Больше или равно

    True, если А больше или равно В

    Меньше или равно

    True, если А меньше или равно В

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

    Таблица 3 .3. Логические операции

    Название

    Выражение

    Результат

    Логическое
    отрицание

    Логическое И

    Логическое ИЛИ

    В условном операторе допустимо использование блока операторов вместо любого из операторов. В этом случае условный оператор имеет вид:

    If УСЛОВИЕ Then

    БЛОК_ОПЕРАТОРОВ_1

    БЛОК_ОПЕРАТОРОВ_2

    End I f

    В условном операторе может проверяться несколько условий. В этом случае условный оператор имеет вид:

    If УСЛОВИЕ_1 Then

    БЛОК_ОПЕРАТОРОВ_1

    ElseIf УСЛОВИЕ_2 Then

    БЛОК_ОПЕРАТОРОВ_2

    Else

    End If

    Пример 1 . Написать часть программы для алгоритма на рис. 3.3.

    Пример 2. Написать часть программы для алгоритма на рис. 3.4.

    3.5. Оператор выбора Select Case

    Оператор Select Case удобно использовать, когда в зависимости от значения некоторого выражения, имеющего конечное множество допустимых значений, необходимо выполнить разные действия. Он также относится к условным операторам, но имеет другой вид:

    Select Case ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ

    Case ЗНАЧЕНИЯ_1

    ОПЕРАТОРЫ_1

    Case ЗНАЧЕНИЯ _ 2

    ОПЕРАТОРЫ _ 2

    . . .

    Case ЗНАЧЕНИЯ_N

    ОПЕРАТОРЫ _N

    [ Case Else

    ИНАЧЕ _ ОПЕРАТОРЫ]

    End Select

    ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ может иметь любой скалярный тип, кроме вещественного. ЗНАЧЕНИЯ состоят из произвольного количества значений или диапазонов, отделенных друг от друга запятыми.

    Тип ЗНАЧЕНИЙ должен совпадать с типом ПРОВЕРЯЕМОГО_ВЫРАЖЕНИЯ .

    Сначала вычисляется ПРОВЕРЯЕМОЕ_ВЫРАЖЕНИЕ . Если его значение совпадает с одним из значений ЗНАЧЕНИЯ_I , то выполнятся ОПЕРАТОРЫ_I End Select . Если его значение не совпадает ни с одним из значений ЗНАЧЕНИЯ_I , то выполнятся ИНАЧЕ_ОПЕРАТОРЫ и управление передается оператору, стоящему после End Select

    Например. Написать часть программы для алгоритма на рис. 3.5, определяющего значение переменной S в зависимости от значения переменной n.

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

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

    For СЧЕТЧИК=НАЧ_ЗНАЧЕНИЕ Т o КОН_ЗНАЧЕНИЕ Step ШАГ

    БЛОК_ОПЕРАТОРОВ

    БЛОК_ОПЕРАТОРОВ

    Next СЧЕТЧИК

    Цикл For…Next перебирает значения переменной СЧЕТЧИК , которая является параметром цикла, от начального до конечного значения с указанным шагом изменения. При этом обеспечивается выполнение блока операторов тела цикла при каждом новом значении счетчика. Если Step ШАГ в конструкции отсутствует, то по умолчанию считается, что шаг равен 1. По оператору Exit For можно выйти из оператора цикла до того, как СЧЕТЧИК достигнет последнего значения.*

    Для перебора объектов из группы подобных объектов, например, ячеек из диапазона или элементов массива, удобно использовать оператор цикла For… Each…Next .

    For Each Элемент In Группа

    БЛОК _ ОПЕРАТОРОВ

    БЛОК_ОПЕРАТОРОВ

    Next Элемент

    В VBA для организации циклов с неизвестным заранее числом повторений используются и другие операторы цикла:

    циклы с предусловием - Do While Loop ,

    Do Until Loop ;

    циклы с постусловием - Do Loop While ,

    Do Loop Until .

    Ниже приведен синтаксис этих операторов цикла:

    " Цикл с предусловием Do While Loop

    Do While УСЛОВИЕ

    БЛОК_ОПЕРАТОРОВ

    БЛОК_ОПЕРАТОРОВ

    " Цикл с предусловием Do Until Loop

    Do Until УСЛОВИЕ

    БЛОК_ОПЕРАТОРОВ

    БЛОК_ОПЕРАТОРОВ

    " Цикл с постусловием Do Loop While

    БЛОК _ ОПЕРАТОРОВ

    БЛОК_ОПЕРАТОРОВ

    Loop While УСЛОВИЕ

    " Цикл с постусловием Do Loop Until

    БЛОК _ ОПЕРАТОРОВ

    БЛОК_ОПЕРАТОРОВ

    Loop Until УСЛОВИЕ

    Оператор Do W hile…Loop обеспечивает многократное повторение блока операторов до тех пор, пока УСЛОВИЕ соблюдается, а оператор



    Другие новости

    Похожие статьи

    • Как работает видеосвязь в имо

      Когда-то давно Imo.i, создал свой протокол. Потом преобразовал его из мессенджера в социальную сеть. Теперь мультипротокольный мессенджер перестал быть мультипротокольным. И мессенджером. Не работает Imo.im? Так и должно быть В...

    • Почему не открывается "Плей Маркет"?

      Большинство владельцев устройств на базе Андроид сталкивались с тем, что какое-то приложение не запускается. Они либо вовсе не хотят запускаться, либо работают не так, как нужно. Это вызывает вопрос: «Почему не работают приложения на...

    • Как добавить аватарку к своим комментариям?

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

    • Прошивка HTC Sensation Официальной и Неофициальной Прошивкой Перепрошивка htc sensation xe z715e

      HTC Sensation XE является тайваньским смартфоном, на который мы расскажем, как получить root права, сделать сброс настроек или графического ключа. Он работает под Android 2.3. Здесь есть инструкция и прошивка для этой модели ХТЦ. Кстати,...

    • Xbox не работает, зависает, не включается, тормозит, глючит, выключается

      Что делать, когда Xbox One не включается и не работает, сам отключается и зависает, тормозят игры и появляются ошибки? Наши рекомендации помогут исправить многие неисправности. × При неожиданном возникновении проблем с играми, учетной...

    • Пропал диск "Д" на компьютере: что делать, как его вернуть

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