Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
книга1(полный конспект).docx
Скачиваний:
56
Добавлен:
23.12.2018
Размер:
49.16 Mб
Скачать

9.4.4. Применение инструкции Select Case

В Visual Basic конструкция Select Case является альтернативной конструкции If …Then …Else в случаях выполнения блока, состоящего из большого набора операторов. Она делает код программы более удобным и понятным.

Общий синтаксис таков:

Select Case TestExpression

Case ExpressionList1

Statement1

Case ExpressionList2

Statement2

.

.

.

case ExpressionListN

statementsN

[Case Else

ElseStatement]

End Select

Здесь TestExpression – некоторое числовое или символьное выражение, обычно переменная, ExpressionList1, ExpressionList2, ExpressionListN представляют список логических выражений, каждое выражение в списке должно быть отделено запятыми, Statements1, Statements2, StatementsN – представляет собой одно или несколько инструкций VBA.

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

1: Sub DirAngle ()

2: Dim Angle As Double

3: Dim Grad As Integer

4: Dim Min As Integer

5: Dim Sec As Integer

6: Dim Deg As Double

7: On Error GoTo Line

8: Angle = InputBox ("Введите значение дирекционного угла в формате_(DD.MMSS):", "Ввод данных")

9: Grad = Int(Angle)

10: Min = Int((Angle - Grad)*100)

11: Sec = Round(((Angle - Grad)*100 - Min)*100)

12: Deg = Grad + Min / 60 + Sec / 3600

13: Select Case Deg

14: Case 0 To 90

15: MsgBox  CB:" &Angle”

16: Case 90 To 180

17: MsgBox  ЮВ:" & 179 - Grad &"." & 60 - Min & 60 – Sec”

18: Case 180 To 270

19: MsgBox  ЮЗ:" & 180 + Angle”

20: Case 270 To 360

21: MsgBox  СЗ:" & 359 - Grad &"." & 60 - Min & 60 – Sec”

22: Case Else

23: MsgBox "Ошибка! Введите угол от 0 до 360 градусов"

24: End Select

25: Line:

26: End Sub

в строке 1 задается имя макроса.

В строках 2 – 6 определен список используемых переменных.

В строке 7 содержится инструкция On Error. Это оператор, перехватывающий ошибки. Оператор On Error передает управление программе обработки ошибок. В случае если пользователь ввел некорректные данные, например строку, либо нажал кнопу Cancel (отмена), программа передает управление оператору Go To после которого следует метка (Line). Программа ищет эту метку в тексте кода и начинает выполнение инструкций после нее (строка 25).

В 8 строке вызывается встроенная функция InputBox, куда пользователь заносит значение угла в формате DD.MMSS.

В строке 9 вызывается встроенная в VBA функция Cint() которая отбрасывает дробную часть от переменной Angle  и получаем значение градусов. Аналогично в строках 10 – 11 получаем значение минут и секунд. Только для определения числа секунд использовалась функция Round() которая округляет число до нужного количество знаков после запятой, в данном случае до ближайшего целого.

В строке 12 значения градусов минут и секунд переводим в десятичные доли градуса.

Строи 12 – 24 содержат инструкции Select Case TestExpression. Строка 13 состоит из простой переменной Deg. Значение этой переменной сравнивается с условием каждой ветви Case инструкции Select Case.

Строки 15, 17, 19, 21, 23 содержат функцию MsgBox для вывода значения румба на экран. Знак амперсанта (&) используется для соединения строк в одно целое.