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

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

Формат оператора Select Case:

Select Case <проверяемоеВыражение>

Case <списокЗначений1> <блокОператоров1>

[Case <списокЗначений2> <блокОператоров2>]

[. . .]

[Case Else <блокОператоров_Else>]

End Select

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

─ <выражение> - в этом случае проверяется, совпадает ли значение проверяемогоВыражения с этим выражением.

─ <выражение1> To <выражение2> - проверяется, находится ли значение проверяемогоВыражения в указанном диапазоне значений.

─ Is <логическаяОперация> <выражение> - проверяемое выражение сравнивается с указанным значением с помощью заданной логической операции (или операции отношения).

Отыскивается только первый подходящий элемент списков выражений. Пример использования оператора Select Case приведен в листинге 4.

Листинг 4. Оператор выбора

'Процедура выводит на экран окно сообщения,

'содержащее командные кнопки Yes, No и Cancel; затем определяет

'выбранную пользователем кнопку и выводит сообщение,

'поясняющее этот выбор.

 

Sub sample4()

Const mTitle = "Демонстрация кнопок MsgBox"

Dim Resp As Integer

Resp = MsgBox(prompt:="Выберите кнопку", Title:=mTitle, _ Buttons:=vbYesNoCancel + vbQuestion)

Select Case Resp

Case Is = vbYes MsgBox prompt:="Вы выбрали кнопку 'Да'", Title:=mTitle, _ Buttons:=vbInformation

Case Is = vbNo MsgBox prompt:="Вы выбрали кнопку 'Нет'", Title:=mTitle, _ Buttons:=vbInformation

Case Is = vbCancel MsgBox prompt:="Вы выбрали кнопку 'Отмена'", Title:=mTitle, _ Buttons:=vbCritical

End Select

End Sub

Оператор безусловного перехода GoTo

Оператор безусловного перехода GoTo всегда изменяет порядок выполнения операторов в процедуре или функции VBA без проверки каких-либо условий. Синтаксис оператора GoTo:

GoTo <метка>

где:

<Метка> – это любая допустимая метка в той же процедуре или функции, которая содержит оператор GoTo.

Листинг 5. Использование GoTo

'Программа будет запрашивать ввод значения пока не будет введено четное число

Sub sample5()

getValue: ' метка

value = InputBox(prompt:="Введите четное число")

If (value Mod 2 <> 0) Then GoTo getValue

End Sub

Для иллюстрации решения задачи из листинга 5 приведем один из альтернативных способов, с помощью оператора цикла (листинг 6).

Листинг 6. Отказ от использования GoTo.

Sub sample6()

Do

value = InputBox(prompt:="Введите четное число")

Loop While value Mod 2 <> 0

End Sub

 

Пример1.

при >0.1

при ≤0.1

 

Программа на VBA:

Конструкция с Select Case:

Sub Пример2_1()

Dim y As Single

Dim x As Single

Dim m As Single

Dim n As Single

Dim S As Single

x = InputBox("x=", "ввод x")

y = InputBox("y=", " ввод y")

m = (7.002 * 0.1 ^ (1 / 3) - 1 + x * (Exp(2) + Exp(-2)) / 10) ^ (1 / 5)

n = Log(3) * (Cos(Application.Pi() / 5) + Cos(3 * Application.Pi() / (5 * y)))

Select Case m ^ 2 + n ^ 2

Case Is > 0.1

S = Atn(5 * m ^ 2 + 7 * n ^ 2)

Case Else

S = Atn(5 * m ^ 2 - 7 * n ^ 2)

End Select

MsgBox ("S=") & S

End Sub

Конструкция IF..THEN…ELSE…END IF:

Sub Пример2_2()

Dim y As Single

Dim x As Single

Dim m As Single

Dim n As Single

Dim S As Single

x = InputBox("x=", " ввод x")

y = InputBox("y=", " ввод y")

m = (7.002 * 0.1 ^ (1 / 3) - 1 + x * (Exp(2) + Exp(-2)) / 10) ^ (1 / 5)

n = Log(3) * (Cos(Application.Pi() / 5) + Cos(3 * Application.Pi() / (5 * y)))

If m ^ 2 + n ^ 2 > 0.1 Then

S = Atn(5 * m ^ 2 + 7 * n ^ 2)

Else

S = Atn(5 * m ^ 2 - 7 * n ^ 2)

End If

MsgBox ("S=") & S

End Sub


Приложение Б

Варианты заданий

1. ,

 

 

2. ,

3. ,

4. ,

5. ,

6. ,

7. ,


8. ,

9. ,

10. ,

 

 

11. ,

 

12. ,

 

13. ,

 

 

14. ,

 

15. ,


16. ,

17. ,

18. ,

 

19. ,

 

 

20. ,

21. ,

22. ,

23. ,


24. ,

25. ,

 

 

 
 

26. ,

27. ,

 
 

28. ,

 
 

29. ,

30. ,


Лабораторная работа №3