Этап 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.
(!) Самостоятельно напишите алгоритм на естественном языке.