VBA для чайников
Шрифт:
Если же пленка другого типа, программа переходит к следующему оператору ElseIf, в котором в качестве условия рассматривается свойство Color (без операций сравнения, в предположении, что это свойство может принимать только значения True или False).
Если значением свойства будет True, то пленка учитывается как цветная негативная, а если значение False, остается только перейти к выполнению Else - больше некуда- и учесть пленку как негативную черно-белую.
В структуре If. . . ElseIf выполняются только операторы, ассоциированные с первым принимающим значение True условием. После
Вложенные операторы If. . .Then в некотором смысле являются противоположностями операторов If. . .ElseIf. Используйте эти операторы, когда для принятия решения нужно проверить дополнительное условие, но только если первое условие принимает значение True. Вложение одного оператора If... Then в другой подобно высказыванию: "Если
X есть Истина и Y есть Истина, то я буду делать А, В и С".
Можно вкладывать один в другой операторы If. . .Then любых видов -
If. . .Then. . .Else, If. . .ElseIf и разнообразные If... Then - и в любой комбинации. Вот схематическое представление пары вложенных операторов If... Then:
If условие! Then
If условие2 Then
(операторы, выполняющиеся, когда условие! и условие2 = True)
ElseIf условиеЗ Then
(операторы, выполняющиеся, когда условие! и условиеЗ = True, а условие2 = False)
(операторы, выполняющиеся, когда и условие1 и условие2 = False, а условиеЗ = True)
End If ' конец внутреннего блока If...Then
(другие операторы, выполняющиеся, когда условие! = True, независимо от того, чему равно условие2)
Else
(операторы, выполняющиеся только тогда, когда условие! = False)
End If
Следующий простой пример программного кода с использованием вложенных операторов If... Then отображает окно с поощрительным сообщением за высокие оценки и необходимый минимум часов классной работы:
If sngGPA > 3.5 Then
If sngUnits > 10 Then
MsgBox "Вы в поощрительном списке деканата!"
End If
End If
Использование логических операций в условиях
Использование логических операций в условных выражениях может быть более элегантной альтернативой использованию ElseIf и вложенных If ... Then, когда нужно выполнить лишь одну ветвь пути, определяемого множеством условий.
Взгляните снова на последний фрагмент программного кода из предыдущего раздела. Ту же задачу можно выполнить с помощью лишь одного оператора If... Then, как здесь:
If sngGPA > 3.5 And sngUnits > 10 Then
MsgBox "Вы в поощрительном списке деканата!"
End If
Условные выражения с логическими операциями не помогут, когда необходимо использовать несколько ветвей пути решений. Попробуйте с помощью логических операций свести к примеру, подобному приведенному выше,
If sngGPA > 3.5 Then
If sngUnits > 10 Then
MsgBox "Вы в поощрительном списке декана!"
Else
MsgBox "Неплохо для прогульщика!"
End If
End If
Мне на ум приходит только одно решение, все равно требующее двух операторов
If... Then, хотя и не вложенных:
If sngGPA > 3.5 And sngUnits > 10 Then
MsgBox "Вы в поощрительном списке декана!"
End If
If sngGPA > 3.5 And sngUnits <= 10 Then
MsgBox " Неплохо для прогульщика!"
End If
Использование операторов Select Case
Операторы If. . .ElseIf и вложенные If. . .Then идеально подходят для принятия решений на основе проверки некоторого числа разных выражений. Если же приходится проверять одно и то же значение, сравнивая с различными выражениями, то самым подходящим обычно оказывается оператор Select Case. Синтаксис этого оператора следующий:
Select Case значение
Case критерий!
(операторы, выполняемые, когда значение удовлетворяет критерий!)
Case критерий2
(операторы, выполняемые, когда значение удовлетворяет критерий2)
... ' дополнительные операторы Case
Case Else ' необязательный
(операторы, выполняемые, когда значение
не удовлетворяет ни одному из приведенных критериев)
End Select
Проверка условий в операторах Select Case
Структура Select Case не использует явным образом полные условные выражения, подобные тем, о которых шла речь выше (см. раздел "Курс на использование условных выражений"). Вы должны разбить каждое условие на две части, представленные как значение и критерийЫ в предыдущем разделе при описании синтаксической конструкции этой структуры. Например, если у нас есть условное выражение
а + b > с
то значение можно определить как часть выражения, находящуюся слева от знака операции сравнения (а + b), а все, что останется, включая знак операции, - это критерий N ( > с).
Пример оператора Select Case
Здесь явно не помешает пример, показывающий, как в действительности может выглядеть структура Select Case.
Select Case objRol l OfFi l m.Type
Case "Слайдовая"
intСлайдовые = intСлайдовые + 1
Case "Цветная негативная"
intЦветныеНегативные = intЦветныеНегативные + 1
Case "ЧБ негативная"
intЧБнегативные = intЧБнегативные + 1
.Case Else
MgaBox "Неизвестный тип пленки."
End Select