Этап 1. Математическая часть.

Теоретические сведения

Оператор Select…Case позволяет сделать выбор из нескольких альтернативных вариантов в зависимости от значения условного выражения.

Синтаксис его следующий:

Select Case Выражение
Case Значение_1

Оператор, выполняемый при совпадении Значения_1 и Значения Выражения.

Case Значение_2

Оператор, выполняемый при совпадении Значения_2 и Значения Выражения.

. . .

Case Значение_N

Оператор, выполняемый при совпадении Значения_N и Значения Выражения.

End Select

В операторе Select…Case можно использовать операции отношения. Для этого надо включить в выражение ключевое слово Is или ключевое слово To. Ключевое слово Is дает указание компилятору сравнить значение проверяемой переменной со значением выражения, следующею за ключевым словом Is. Ключевое слово To задает диапазон значений.

Задача 10 (работа с оператором выбора Selet…Case). Написать программу, которая запрашивает пользователя номер дня недели и выводит соответствующее сообщение: 1 -> «Начало рабочей недели!», 2-4 -> «Середина рабочей недели!», 5 -> «Окончание рабочей недели!», 6-7 -> «Выходной!». В случае, если пользователь укажет недопустимое число, программа должна вывести сообщение «Ошибка ввода данных». Ниже представлен рекомендуемый вид экрана во время работы программы:

Введите номер месяца (число от 1 до 7)

-> 2

-> Середина рабочей недели!

Решение.

Этап 1. Математическая часть.

Алгоритмически эта задача решается следующим образом. Блок-схема рис.17.

Эту блок-схему можно реализовать в VBA следующим способом:

Private Sub CommandButton3_Click()

‘Декларация переменных

Dim Nd As Integer

Dim Dn As String

'Ввод данных

Nd = InputBox("Введите номер дня недели: ", "Ввод данных")

‘Проверка корректности ввода даных

If Nd <= 0 Or Nd > 7 Then

MsgBox "Ошибка ввода данных", vbOKOnly+vbCritical, "Не корректный ввод даных!"

GoTo 1

End If

'Вычисления

If Nd = 1 Then

Dn = "Начало рабочей недели!"

Else

If Nd <= 4 Then

Dn = "Середина рабочей недели!"

Else

If Nd = 5 Then

Dn = "Окончание рабочей недели!"

Else

Dn = "Выходной!"

End If

End If

End If

'Вывод результата

MsgBox Dn, vbOKOnly + vbInformation, "Результат"

1: End Sub

 

Как видите, здесь встречаются вложенные операторы If…Then это может затруднить составление, набор, отладку и чтение программы. Для таких случаев в VBA существует оператор Select…Case.

 

(!) Самостоятельно напишите алгоритм на естественном языке.