Основы офисного программирования и язык VBA

       

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


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

Синтаксис.

Select Case Выражение-тест [Case СписокВыражений-n [операторы-n]] [Case Else [ИначеОператоры]] End Select

Выражение-тест должно присутствовать обязательно. Оно может быть произвольным выражением с числовым или строковым значением. СписокВыражений-n должен присутствовать в строке, начинающейся ключевым словом Case (Случай). Выражения в этом списке отделяются запятыми и могут иметь одну из форм:

  1. выражение,
  2. выражение-нижняя-граница To выражение-верхняя-граница,
  3. Is оператор-сравнения выражение.

Первая форма задает отдельные значения, вторая и третья позволяют задавать сразу целые диапазоны (области) значений. Последовательность операторов операторы-n необязательна. Она будет исполнена, если соответствующий СписокВыражений-n является первым списком, сопоставимым с текущим значением Выражения-теста (т. е. он явно содержит это значение, либо оно попадает в один из заданных в списке диапазонов). После исполнения операторов последовательности операторы-n проверка на соответствие другим спискам выражений не производится, и управление передается на оператор, следующий за End Select. Необязательная последовательность ЕслиОператоры выполняется, если ни один из списков выражений несопоставим со значением Выражения-теста.

Пример:

Public Sub Case1() Dim Before As Integer Dim CurrentYear As Integer, Str As String

' Инициализация переменных: CurrentYear = 1999 Before = InputBox("Сколько лет тому назад?", "Когда", 10)

Select Case CurrentYear - Before Case 1954 To 1969, 1971 To 1974, 1982, Is < 1970 Str = " Годы учебы" Case 1972 To 1989 Str = "Годы воспитания" Case Else Str = "Прочие годы" End Select Debug.Print Str

End Sub

Здесь, если перед выполнением выбора Before = 20, значением тестового выражения будет 1979, и будет работать второй вариант ("Годы воспитания"). При Before = 25 значение 1974 сопоставимо с двумя списками, но для исполнения будет выбран лишь первый вариант ("Годы учебы").

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

Case "everything", "nuts" To "soup"

Задаваемое им множество строк включает строку "everything" и все строки от "nuts" до "soup" (например, "onion").



Содержание раздела