- •Программирование в Microsoft Excel Лабораторная работа №3 Условные конструкции vba
- •1.1Логические переменные и выражения
- •3.2. Условный оператор
- •1.2 Оператор выбора
- •Выражение1 To Выражение2, где ключевое слово То означает диапазон значений от Выражение1 до Выражение2.
- •3.4. Оператор Goto
- •3.5. Операторы On Error, Resume, End
1.2 Оператор выбора
Если нужно проверить несколько условий, то оператор If …Then может стать слишком сложным. В этом случае применяется оператор выбора. Оператор выбора выполняет одну из нескольких групп инструкций в зависимости от значения выражения. Общий вид оператора:
Select Case TextExpression
Case Expression1
Группа операторов 1
Case Expression2
Группа операторов 2
….
[ Case Else
Группа операторов Else ]
End Select
Здесь: TextExpression – числовое или строковое выражение.
Expression - список из одного или нескольких, разделённых запятыми, выражений следующего вида:
Числовое, строковое или логическое выражение.
Выражение1 To Выражение2, где ключевое слово То означает диапазон значений от Выражение1 до Выражение2.
Is Выражение, где Is означает эквивалентность выражения TextExpression Выражению, стоящему после Is.
В следующем примере в зависимости от величины введённого числа отображается сообщение, указывающее на величину числа или диапазон, которому оно принадлежит:
Private Sub CommandButton1_Click()
Dim iRes As Integer
iRes = InputBox("Введите целое число")
Select Case iRes
Case 1
MsgBox "1"
Case 2, 3
MsgBox "2 или 3"
Case 4 To 6
End ‘оператор End прекращает выполнение программы
Case Is > 6
MsgBox " Больше 6"
Case Is < 0
MsgBox "Отрицательное число"
End Select
End Sub
3.4. Оператор Goto
Оператор перехода на указанную строку. Его общий вид:
Goto line
где line - метка строки, представляющая собой буквенно-цифровое обозначение, удовлетворяющее правилам составления имён в VBA. Метка строки с двоеточием после неё ставится в начале нужной строки:
line :
Пример:
Sub nn()
Dim Number, MyString
Number = 1
If Number = 1 Then GoTo Line1 Else GoTo Line2
Line1:
MyString = "Number equals 1"
GoTo LastLine ' Переход на строку LastLine.
Line2: MyString = "Number equals 2"
LastLine: Debug.Print MyString
End Sub
Применение оператора Goto считается плохим стилем программирования, поскольку большое количество меток и этих операторов затрудняет отладку программы и делает её трудно читаемой. Практически в любой ситуации можно обойтись без него, используя условные операторы, выбора или циклы. В старых программах на Basic каждая строка имела метку, независимо от того есть на неё ссылка в программе или нет. Такой стиль поддерживается и в VBA для совместимости со старыми программами.
3.5. Операторы On Error, Resume, End
Операторы On Error и Resume также как условные операторы, оператор выбора, Goto и циклы относятся к операторам управления ходом выполнения. Они предназначены для контроля и исправления возможных ошибок пользователя.
Оба оператора имеют 3 варианта использования. Оператор On Error:
1. On Error GoTo метка – в случае возникновения ошибки управление передаётся на оператор, отмеченный меткой. Этот оператор размещают обычно в самом начале программы, чтобы его действие распространялось на всё тело процедуры. Обработчик ошибок, напротив, помещают в самый конец программы, а перед ним помещают оператор Exit Sub, чтобы управление не попадало в обработчик ошибок, если ошибок не было.
2. On Error Resume Next – в случае возникновения ошибки управление передаётся на оператор, непосредственно следующий за оператором, в котором произошла ошибка.
3. On Error GoTo 0 – отключает обработку ошибок в данной программе.
Оператор Resume:
1. Resume [0] – возвращает управление оператору, вызвавшему ошибку.
2. Resume Next – в случае возникновения ошибки управление передаётся на оператор, непосредственно следующий за оператором, в котором произошла ошибка.
3. Resume метка – в случае возникновения ошибки управление передаётся на оператор, отмеченный меткой.
Пример (фрагмент кода):
…
On Error Goto ErrDebug
Numb = InputBox(“Сколько авторов работают в издательстве? ”)
…
операторы
…
Exit Sub
ErrDebug:
MsgBox “Неверное значение!”, vbCritical
Resume
…
Оператор End предназначен для прекращения выполнения программы. Например, оператор
If x < 0.2 Then
End
End If
прекратит выполнение программы, если x<0.2.
Задание 3.3:
При помощи оператора выбора Select Case вычислить функцию f с номером области (функции f1, f2, f3, f4 из таблицы; вариант указывается преподавателем). Номер области и значение функции вывести на экран при помощи диалогового окна вывода. Окно вывода должно иметь три кнопки: "Да", "Нет" и "Отмена". При нажатии кнопки "Да" ваша программа должно вывести на экран значение функции, возведённой в квадрат. При нажатии кнопки "Нет" ваша программа должно вывести на экран удвоенное значение функции. При нажатии "Отмена" - прекратить выполнение. Определение нажатой клавиши - при помощи оператора Select Case. Значения номера области и функции вывести на рабочий лист Excel в ячейки А1 и А2.
Таблица 1 |
|||||
№ варианта |
|
|
|
|
|
01 |
|
|
|
|
|
02 |
|
|
|
|
|
03 |
|
|
|
|
|
04 |
|
|
|
|
|
05 |
|
|
|
|
|
06 |
|
|
|
|
|
07 |
|
|
|
|
|
08 |
|
|
|
|
|
09 |
|
|
|
|
|
10 |
|
|
|
|
|
11 |
|
|
|
|
|
12 |
|
|
|
|
|
13 |
|
|
|
|
|
14 |
|
|
|
|
|
15 |
|
|
|
|
|
16 |
|
|
|
|
|
17 |
|
|
|
|
|
18 |
|
|
|
|
|
19 |
|
|
|
|
|
20 |
|
|
|
|
|
