Книга: Excel. Трюки и эффекты

Инструкции выбора

Инструкции выбора

Язык VBA поддерживает инструкции, позволяющие осуществлять различные действия в зависимости от выполнения или невыполнения заданных условий, – инструкции выбора If-Then-Else и Select.

Инструкция If-Then-Else

Инструкция VBA If-Then-Else предоставляет возможность выбора одного из действий в зависимости от значений заданных логических выражений. Формат данной инструкции следующий:

If Выражение1 Then

[Инструкции1]

[ElseIf Выражение2 Then

[Инструкции2]]

[ElseIf ВыражениеN Then

[ИнструкцииN]]

[Else

[Инструкции]]

End If

Здесь Выражение1 – ВыражениеN – логические выражения. Если какое-либо из них истинно, то выполняются инструкции, находящиеся после соответствующего ключевого слова If или Elself. Если ни одно из выражений не является истинным, то выполняются инструкции, записанные после ключевого слова Else (если, конечно, это ключевое слово используется).

Рассмотрим пример использования инструкции If-Then-Else:

If intAction = 1 Then

' Выполнение сложения

res = a + b

ElseIf intAction = 2 Then

' Выполнение вычитания

res = a – b

ElseIf intAction = 3 Then

' Выполнение умножения

res = a * b

Else

' Заданное действие не поддерживается

'…

End If

В приведенном примере с помощью инструкции If-Then-Else выбирается одно из трех поддерживаемых действий для переменных а и Ь: сложение, вычитание или умножение. Действие, которое необходимо выполнять, определяется по содержимому переменной intAction. Если она имеет значение, отличное от 1, 2 и 3, то выполняются инструкции, следующие непосредственно после ключевого слова Else.

Язык программирования VBA также поддерживает упрощенный вариант инструкции If-Then-Else:

If Выражение Then [Инструкции1] [Else Инструкции2]

Здесь Выражение – это логическое выражение, при истинном значении которого выполняются инструкции после ключевого слова Then. Если Выражение не истинно, то выполняются инструкции после ключевого слова Else (если это ключевое слово используется). При использовании этой формы инструкции If-Then-Else следует учитывать, что она записывается в одну строку (или в несколько строк, но с использованием символа подчеркивания). Также необходимо учитывать, что Инструкции и Инструкции1 представляют собой либо одну инструкцию VBA, либо несколько инструкций, разделенных двоеточием.

Если ключевое слово Else используется, то элемент Инструкции1 может отсутствовать.

Ниже приведены несколько примеров использования сокращенного варианта инструкции If-Then-Else:

If a = 1 Then a = 2 Else a = 1

If a = 1 Then a = 2 Else a = 1: b = b + 1

If a = 1 And b = 0 Then Else a = 1: b = b + 1

Инструкция Select Case

Select Case позволяет, подобно инструкции If-Then-Else, делать выбор выполняемых программой действий в зависимости от значения заданного аргумента. При большом количестве альтернатив данная инструкция работает быстрее инструкции If-Then-Else, так как значение проверяемого выражения вычисляется только один раз. Формат инструкции Select Case приведен ниже:

Select Case Проверяемое_выражение

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

[Инструкции]]…

[Case Else

[Инструкции]]

End Select

Здесь Проверяемое_выражение – это любое численное или строковое выражение. Список_выражений содержит неограниченное количество выражений, диапазонов значений и условий. Для более детального пояснения ниже приведен формат элемента Список_выражений:

Выражение | Мин_значение To Макс_значение | Is Оператор Выражение _

[, Выражение | Мин_значение To Макс_значение | Is Оператор Выражение]…

Значения элементов приведенной конструкции следующие.

 Выражение – это любое численное или строковое выражение (тип элемента Выражение должен соответствовать типу элемента Проверяемое_выражение).

 Мин_значение То Макс_значение – используется для задания диапазона значений. Элементы Мин_значение и Макс_значение задают минимальное и максимальное значения диапазона соответственно.

• Is Оператор Выражение – используется для задания условий. Позволяет использовать в инструкции Select Case операторы сравнения. Элемент Оператор – это любой оператор сравнения VBA, кроме Is и Like. Элемент Выражение – это любое выражение, тип которого соответствует типу элемента Проверяемое_выражение.

При соответствии значения элемента Проверяемое_выражение одному из заданных выражений, при попадании значения этого элемента в один из диапазонов или при выполнении одного из заданных условий происходит выполнение инструкций, записанных после соответствующего ключевого слова Case. Если ни одна Case-конструкция не сработала, то выполняются инструкции после сочетания ключевых слов Case Else.

Допустим, что в программе необходимо проверять значение численной переменной intTestValue и выполнять одни действия, когда эта переменная имеет значение 1, 2, 3 или 5, и другие действия – в противном случае. Приведенный ниже фрагмент программы позволяет решить поставленную задачу:

Select Case intTestValue

Case 1 To 3, 5

' Действия при значении переменной intTestValue,_

равном 1, 2, 3 или 5

Case Is < 1, Is > 3

' Действия при значении переменной intTestValue _

меньше 1 или больше 3

End Select

В данном примере необходимо обратить внимание на то, что значение 5 удовлетворяет обеим Case-конструкциям. При обработке инструкции Select Case VBA просматривает конструкции с ключевым словом Case в том порядке, в котором они следуют в программе. Поэтому в приведенном примере при значении переменной intTestValue, равном 5, выполняются инструкции после первого ключевого слова Case.

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

Select Case strTestValue

Case «a» To "z"

" Действия, если строка strTestValue начинается _

со строчной буквы латинского алфавита

Case «A» To "Z"

" Действия, если строка strTestValue начинается _

с прописной буквы латинского алфавита

Case Else

" Действия, если строка не начинается с символа _

латинского алфавита

End Select

Оглавление книги


Генерация: 0.856. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз