Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
пособие по VBA(Курица).docx
Скачиваний:
30
Добавлен:
17.11.2019
Размер:
2.71 Mб
Скачать

Контрольные вопросы

  1. Что такое макрос? Перечислите этапы создания, записи и изменения и отладки макроса?

  2. Какие подходы существуют в программировании для обработки ошибки выполнения программы?

  3. Перечислите и охарактеризуйте основные методы перехвата ошибок?

  4. В чем отличие инструкций в методе Raise и в методе Clear?

  5. Управляющие структуры vba

Управляющие структуры позволяют управлять последовательностью выполнения программы. Без операторов управления все операторы программы будут выполняться слева направо и сверху вниз. Однако иногда требуется многократно выполнять некоторый набор инструкций автоматически, либо решить задачу по-другому в зависимости от значения переменных или параметров, заданных пользователем во время выполнения. Для этого служат конструкции управления и циклы.

VBA поддерживает следующие конструкции принятия решений:

  • If . . . Then

  • If . . . Then . . . Else

  • Select Case

    1. Конструкция If . . . Then

Конструкция If . . . Then применяется, когда необходимо выполнить один или группу операторов в зависимости от некоторого условия. Синтаксис этой конструкции позволяет задавать ее в одной строке или в нескольких строках программы:

If условие Then выражение

If условие Then

выражение

End If

Обычно условие является простым сравнением, но оно может быть любым выражением с вычисляемым значением. Это значение интерпретируется как False (Ложь), если оно нулевое, а любое ненулевое рассматривается как True (Истина). Если условие истинно, то выполняются все выражения, стоящие после ключевого слова Then. Для условного выполнения одного оператора можно использовать как синтаксис для одной строки, так и синтаксис для нескольких строк (блоковую конструкцию).

Пример 1. Условный переход (If … Then…)

Р ассчитать значение А и n при x = 2.3, y=45.8, z=55.5 и условиях:

Запишем код программы:

Option Explicit

Public Sub Execute()

Dim a As Single, x As Single, y As Single

Dim z As Single, n As Single

x = 2.3

y = 45.8

z = 55.5

a = Sqr(Abs(x + y ^ 2 + z))

If a > 2 Then

n = x ^ 2 - y ^ 3 + 2 * x * y

End If

If a = 2 Then

n = y ^ 3 - x ^ 2

End If

If a < 2 Then

n = 1 - (y - z) / (y + z)

End If

Debug.Print "x ="; x; "y ="; y; "z ="; z

Debug.Print "a ="; a

Debug.Print "n ="; n

End Sub

Пример 2. Рассчитать температуру при условии кипения воды или вода будет превращаться в пар (рис. 24.).

Рис. 24. Результат программы примера 2.

Заметим, что синтаксис оператора If . . . Then для одной строки не использует оператор End If. Чтобы выполнить последовательность операторов, если условие истинно, следует использовать блоковую конструкцию If . . . Then . . . End If.

Так, например:

If (a = b) Or (c <> d) Then     b = d     a = 20 End If

Выражение b=d будет выполнено только в том случае, если a=b или c<>d.

Если условие ложно, то операторы после ключевого слова Then не выполняется, а управление передается на следующую строку (или строку после оператора End If в блочной конструкции).