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

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

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

Синтаксис оператора

Select Case testexpression [Case expressionlist-n [statements-n]] ... [Case Else [elsestatements]]

End Select

  • testexpression – тестируемое выражение. Обязательный элемент;

  • строки Case задают возможные значения тестируемого выражения;

  • expressionlist – список значений тестируемого выражения, который определяет выполняемую последовательность операторов: если значение тестируемого выражения найдено в списке expressionlist-1, то выполняются операторы statements-1 и т.д.;

  • строка Case Else определяет операторы, которые выполняются, если значение не найдено ни в одном списке;

  • statements-n, elsestatements последовательности операторов.

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

  • expression (нижняя граница) To expression (верхняя граница) – задает диапазон значений списка: "от" и "до";

  • Is comparisonoperator (оператор сравнения) – задает условие на значение тестируемого выражения, при справедливости которого выполняются последующие операторы.

Важно

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

  • Хотя бы одна из совокупностей операторов должна быть не пустой.

  • Тестируемое выражение может быть задано формулой.

  • Если конструкции Case Else нет в операторе выбора и значение не найдено ни в одном списке, ни одна из последовательностей операторов не выполняется.

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

Примеры

  1. Пуcть необходимо вычислить значения переменной X в зависимости от значений переменной A по формуле:

Sub X_A()

Dim X As Single, A As Integer

For A = –5 To 15

Select Case A

Case 7, 9, 12, 15

X = (A – 1) * A

Case Is <= 5

X = A / 2

Case Else

X = A + 1

End Select

Debug.Print A, X

Next A

End Sub

Пусть переменная A изменяется от –5 до 15 с шагом 1. В операторе выбора используются два списка значений: в первом списке значения перечисляются через запятую; во втором списке после ключевого слова Is задается условие на значение. Для расчета при всех остальных значениях A используется ключевое слово Case Else.

  1. Процедура меняет цвет заливки первых двадцати ячеек столбца A.

Public Sub color_cells_select()

Dim i As Integer

For i = 1 To 20

Select Case i Mod 3

Case 1

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

Case 0

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

Case Else

Cells(i, 1).Interior.ColorIndex = 1 'черный

End Select

Next i

End Sub

По сравнению с процедурой color_cells_if, записанной при помощи оператора If, новая процедура выглядит более лаконичной и прозрачной.