Этот оператор производит разбор случаев и в зависимости от значения анализируемого выражения выбирает и исполняет одну из последовательностей операторов.
Синтаксис.
Select Case Выражение-тест [Case СписокВыражений-n [операторы-n]] [Case Else [ИначеОператоры]] End Select
Выражение-тест должно присутствовать обязательно. Оно может быть произвольным выражением с числовым или строковым значением. СписокВыражений-n должен присутствовать в строке, начинающейся ключевым словом Case (Случай). Выражения в этом списке отделяются запятыми и могут иметь одну из форм:
Первая форма задает отдельные значения, вторая и третья позволяют задавать сразу целые диапазоны (области) значений. Последовательность операторов операторы-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").