Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Создание пользовательских п ÒÉÌÏÖÅÎÉÊ ÓÒÅÄÓÔÁÍ...doc
Скачиваний:
6
Добавлен:
18.11.2019
Размер:
2.02 Mб
Скачать

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

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

Для записи условного оператора используется конструкция If... Then... Else. Условный оператор может быть записан в одну строку или блоком.

Синтаксис оператора при записи в строку

If condition Then [statements] [Else elsestatements]

Например, оператор IF salary <9000 Then social=salary*0.2 вычисляет выплату, если зарплата менее 9000.

Синтаксис оператора при записи блоком

If condition-1 Then [statements]

[ElseIf condition-2 Then [elseifstatements-2] ...

[Else [elsestatements]]

End If

  • сondition-nтестируемые выражения со значением True или False. Обязательный элемент;

  • statements, elseifstatements-2, elsestatements – последовательности операторов, необязательные элементы;

  • ElseIfключевое слово (записывается в одно слово), используемое для задания дополнительных условий (их может быть несколько). Необязательный элемент;

  • End If оператор, играющий роль закрывающей операторной скобки.

Если условие (condition) верно, то выполняется последовательность операторов statements. Если условие нарушено, при записи оператора в строку выполняется последовательность операторов elsestatements, а при записи оператора блоком конструкция ElseIf позволяет задать дополнительные условия тестирования и, если ни одно из них не выполнено, то выполняются операторы elsestatements.

После выполнения одной последовательности операторов, управление передается оператору, следующему за условным оператором, а в случае блочной структуры – за EndIf.

IF salary <9000 Then

social=salary*0.2

Else

social=0

End If

Приведенный в примере оператор вычисляет выплату, если зарплата менее 9000, и устанавливает нулевую выплатув противном случае.

Важно

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

  • Последовательность выполняемых действий statements, elseifstatements, elsestatements может быть пустой или состоять из нескольких операторов, записанных последовательно в разных строках или через двоеточие в одной строке. По крайней мере, одна из последовательностей должна быть непустой.

  • Часть конструкции, относящаяся к Else и к ElseIf, может быть опущена, если она не используется (нет альтернативных действий).

  • Конструкций ElseIf может быть несколько. При наличии такой конструкции отыскивается первое истинное условие, и выполняются соответствующие операторы elseifstatements.

  • Оператор EndIf обязателен в блочной структуре условного оператора и не используется при записи условного оператора в строку.

  • Возможно использование вложенных условных операторов.

Примеры

  1. Вычисляется сумма четных чисел в интервале значений от 0 до 20 и произведение нечетных чисел в том же интервале.

    Public Sub even_odd()

    Dim s As Integer, p As Long, i As Integer

    p = 1

    For i = 1 To 20

    If i Mod 2 = 0 Then

    s = s + i

    Else

    p = p * i

    End If

    Next i

    Debug.Print "sum ", s, "product ", p

    End Sub

    Переменная p описана как Long, т.к. значение произведения превосходит число 32767. Начальное значение переменной устанавливается в 1.

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

  2. Первые двадцать ячеек столбца A меняют свой цвет. Если номер ячейки кратен трем, то цвет заливки красный. Для первой ячейки в тройке ячеек, то устанавливается синий цвет заливки. Остальные ячейки окрашиваются черным цветом.

Public Sub color_cells_if()

Dim i As Integer

For i = 1 To 20

If i Mod 3 = 1 Then

Cells(i, 1).Interior.ColorIndex = 5 'синий

ElseIf i Mod 3 = 0 Then

Cells(i, 1).Interior.ColorIndex = 3 'красный

Else

Cells(i, 1).Interior.ColorIndex = 1

End If

Next i

End Sub

Запись Cells(i,1) представляет объект Range – ячейку первого столбца i-ой строки. Объект Interior – цвет заливки ячейки. Свойство ColorIndex этого объекта – номер цвета из цветовой палитры.

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

Функция

Синтаксис

Предназначена для проверки

IsArray

IsArray(VarName)

является ли переменная VarName массивом

IsDate

IsDate(expression)

является ли выражение expression датой или может ли быть преобразовано в дату

IsEmpty

IsEmpty(expression)

инициализирована ли переменная expression или содержит ли выражение (переменная или ячейка) пустое значение

IsMissing

IsMissing(argname)

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

IsNull

IsNull(expression)

имеет ли выражение expression значение Null

IsNumeric

IsNumeric(expression)

является ли значение выражения expression числом

IsObject

IsObject(expression)

является ли значение выражения expression объектом

Пример

Процедура запрашивает ввод числа или даты и, в зависимости от типа введенных данных, высвечивает сообщение.

Public Sub num_date()

Dim A As Variant

A = InputBox("Введите число или дату")

If IsDate(A) Then

MsgBox "Дата " & Format(A, "dddd dd mm yyyy")

ElseIf IsNumeric(A) Then

MsgBox "Число " & A

Else

MsgBox "Некорректный ввод "

End If

End Sub

Если введена дата или число, то введенное значение высвечивается. В противном случае – сообщение о некорректности ввода. Дата форматируется: высвечивается дата и дополнительно день недели, соответствующий введенной дате.