Ветвления на языке VBA
Организация ветвления на языке Visual Basic for Application
Необходимость обработки критических ситуаций возникает при программировании довольно часто. Например, при решении задачи: вычислить значение выражения Sub выражение6() Dim x, y, z As Double x = Val(InputBox("Введите x=")) y = Val(InputBox("Введите y="))
z = (x + y) / (x - y)
MsgBox ("z=" + Str(z))
End Sub
При вводе значений x = 3, y = 3 программа прекратит работу и выдаст сообщение
о прекращении работы, так как произошло деление на 0. Нажатие на кнопку Debug позволяет перейти в строку, в которой состоялась ошибка выполнения (Run-time error).
Необходимо, преобразовать программу следующим образом:
Sub выражение7() Dim x, y, z As Double x = Val(InputBox("Введите x=")) y = Val(InputBox("Введите y="))
If x - y <> 0 Then z = (x + y) / (x - y) MsgBox ("z=" + Str(z)) Else MsgBox ("Знаменатель равен =0") End If
End Sub Для организации ветвлений в языке VBA предусмотрено несколько операторов: If и Select Case. Общий вид оператора If:
If выражение Then [инструкции] [ElseIf выражение-n Then [иначе_если_инструкции] ... [Else [иначе_инструкции]] End If
Выражение должно возвращать логическое значение: истина или ложь (True или False).
Общий вид оператора Select Case:
Select Case выражение [Case выражение-n [инструкции -n]] ... [Case Else [иначе_инструкции]] End Select
Пример использования Select Case.
Sub пример_select_case() Dim Number Number = 8 Select Case Number Case 1 To 5 MsgBox "Между 1 и 5" Case 6, 7, 8 MsgBox "Между 6 и 8" Case 9 To 10 MsgBox "Между 9 и 10" Case Else MsgBox "Не в диапазоне от 1 до 10" End Select End Sub
При программировании исключительных ситуаций необходимо предусмотреть все возможные случаи. Поясним это на примерах.
Пример 1. Вычислить значение выражения Решение. Sub выражение8() Dim x, y, z As Double
x = Val(InputBox("Введите x=")) y = Val(InputBox("Введите y="))
If x - y <> 0 And x > 0 Then z = (x + y) / (x - y) + Sqr(x) MsgBox ("z=" + Str(z)) Else MsgBox ("Выражение не имеет смысла") End If
End Sub
Пояснение решения. Исключительная ситуация возникает, когда в знаменателе получается нуль и подкоренное выражение меньше нуля.
Пример 2. Вычислить площадь треугольника по трем известным сторонам.
Решение. Sub Герон3() Dim A, b, c, p, s As Double
A = Val(InputBox("Введите a=")) b = Val(InputBox("Введите b=")) c = Val(InputBox("Введите c="))
If (A + b > c) And (A + c > b) And (b + c > A) Then p = (A + b + c) / 2 s = Sqr(p * (p - A) * (p - b) * (p - c)) MsgBox ("s=" + Str(s)) Else MsgBox ("Треугольник не существует") End If
End Sub
Пояснение решения. Предложенная программа проверяет существование треугольника, и не будет работать при введенных отрицательных значениях a, b, c.
Правильное решение в примере 3.
Пример 3. Вычислить площадь треугольника по трем известным сторонам.
Sub Герон4() Dim A, b, c, p, s As Double Dim d1, d2, tr_ok As Boolean
A = Val(InputBox("Введите a=")) b = Val(InputBox("Введите b=")) c = Val(InputBox("Введите c="))
d1 = (A >= 0) And (b >= 0) And (c >= 0) d2 = (A + b > c) And (A + c > b) And (b + c > A) tr_ok = d1 And d2
If tr_ok Then p = (A + b + c) / 2 s = Sqr(p * (p - A) * (p - b) * (p - c)) MsgBox ("s=" + Str(s)) Else MsgBox ("Треугольник не существует") End If
End Sub
Пояснение решения. Программа вычисляет площадь треугольника, правильно обрабатывая исключительные ситуации.
Читайте также:
|




