Баннер
Баннер

Ветвления на языке VBA

Оглавление
Ветвления на языке VBA
Преобразование программы
Общий вид оператора Select
Пример 1
Пример 2
Пример 3
Все страницы

Организация ветвления на языке 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

Пояснение решения.

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



Читайте также:

Добавить комментарий


Защитный код
Обновить




Разделы



Главная VBA Ветвления на языке VBA