Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Практикум по VBA(реценц последний).doc
Скачиваний:
0
Добавлен:
28.12.2019
Размер:
2.47 Mб
Скачать
      1. Инструкции присваивания (назначения или присвоения)

Инструкции присваивания – одно из наиболее часто используемых инструкций в программах VBA. Операторы присваивания приписывают переменным или свойствам объектов конкретные значения.

Такие операторы состоят из трех частей:

  1. имени переменной, или свойства;

  2. знака равенства =;

  3. выражение, задающие нужное значение.

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

Правая Сторона = Левая Сторона

Инструкция говорит о том, что левая сторона определяется значением, которое стоит с правой стороны. Символ «=» называется оператором Назначения.

      1. Выполняемые инструкции (исполняемые инструкции)

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

  1. Вызов процедуры.

  2. Активизация метода некоторого объекта.

  3. Управление порядком, в котором должны выполняться другие операторы, (с помощью организации циклов, выбора участка программного кода из нескольких вариантов для последующего выполнения).

  4. Выполнение одного из встроенных операторов VBA или функции.

      1. Инструкции по управлению потоком

VBA относится к категории языков структурного программирования и позволяет использовать стандартные управляющие структуры. Управляющие структуры – это операторы программного кода, определяющие, какие действия будут выполняться следующими, и использующие для этого некоторое условие, действительное во время выполнения программного кода. Управляющие структуры вносят в программу ясность, организацию и структурную стройность. Они позволяют с относительной простотой проследить тот путь, который программа может выбрать при её выполнении.

Управляющие структуры можно разбить на три группы:

  1. Линейные.

  2. Разветвленные.

  3. Циклические.

В линейной структуре операторы выполняются друг за другом.

Для реализации ветвлений в программах на VBA используются следующие операторы:

оператор безусловного перехода Goto.

условный оператор If;

оператор выбора Select Case;

Оператор передачи управления (безусловного перехода)

Оператор безусловного перехода всегда изменяет порядок выполнения операторов в процедуре или функции VBA, переходит к выполнению кода с другого места. VBA имеет только один оператор безусловного перехода: GoTo.

Формат оператора GoTo:

GoTo <метка>

<Метка> – это любая допустимая метка (это особый тип идентификатора) в той же процедуре или функции, которая содержит оператор GoTo. При выполнении оператора GoTo VBA немедленно переходит к выполнению оператора в строке, определенной с помощью метки.

Например:

GoTo 12

12 – метка оператора программы, к которому будет осуществлен переход.

Основные формы условных операторов

Линейная форма условных операторов

  1. Линейная безальтернативная форма

Если структура If ... Then должн выполниться только один оператор, когда условие принимает значение Истина (Да, True), то всю структуру можно уместить в одну строку. Например:

If S<3 Then z=x+y

  1. Линейная альтернативная форма

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

В этом случае, если условие принимает значение True (Да, Истина), то выполняется один блок программного кода, а если условие принимает значение False (Ложь, Нет), то выполняется другой.

Блочная форма условных операторов

  1. Блочная безальтернативная форма

If условие Then

(операторы выполняются при значении условия True (Да, Истина))

End If

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

Например:

If a>b Then

b=a (выполнение условия, ветка Да)

a=c (оператор, выполняемый при значении Да)

End If

  1. Блочная альтернативная форма

If условие Then

(блок программных операторов, выполняемых при значении Истина)

Else

(блок программных операторов, выполняемых при значении Ложь)

End If

Например:

Выполнить табулирование функции на участке с шагом

Так как необходимо многократно проверять условие при каждом изменении х, следовательно, фрагмент программы будет представлен в следующем виде:

If x>=0 Then

y=a+b

Else

y=a^2

End If

В альтернативной форме операторы IfThen могут быть вложены друг в друга. Используется эта конструкция тогда, когда для принятия решения нужно проверить дополнительное условие, т.е. первое и второе условие принимает значение True (Истина, Да).

Синтаксис:

If условие1 Then

If условие2 Then

(блок операторов, выполняющихся, когда условие1 и условие2 – Истина)

Else

(блок операторов, выполняющихся, когда условие2 – Ложь)

End If

End If

Например, если значение x находится в интервале [-5;5], то вычислить y по формуле y= x2, если нет y=x3.

Фрагмент программы:

If x>-5 Then

If x<5 Then

Y=x^2

Else

Y=x^3

End If

End If

В альтернативной форме используется ключевое слово ElseIf в том случае, когда определяется несколько блоков операторов, один из которых будет выполняться в зависимости от условия:

Конструкция (синтаксис):

If условие1 Then

(операторы, выполняющиеся, когда условие1– Истина)

ElseIf условие2 Then

(операторы, выполняющиеся, когда условие1– Ложь, а условие2 - Истина)

ElseIf условие3 Then

(операторы, выполняющиеся, когда условие1 и условие2– Ложь, а условие3 - Истина)

Else

(операторы, выполняющиеся, когда все условия – Ложь)

End If

Например:

Фрагмент программы:

If x<0 Then

Y=a+b

ElseIf x=0 Then

Y=a

Else

Y=a*b

End If

Основные формы операторов цикла

Циклические управляющие структуры представлены операторами циклов. Циклы позволяют выполнить одну или несколько строк кода несколько раз. VBA поддерживает следующие циклы:

For...Next

For Each...Next

Do... Loop

Для всех видов циклов используется понятие тело (body) цикла. Тело цикла – это блок операторов, находящийся между началом и концом цикла.

Конструкция For . . . Next

При Конструкции For . . . Next число повторений известно заранее. В цикле For используется переменная, называемая переменной цикла или счетчиком цикла, которая увеличивается или уменьшается на заданную величину при каждом повторении цикла. Синтаксис этой конструкции следующий:

For i = start To end [Step n]

Тело цикла (операторы)

Next i

Параметры i (счетчик), start (начало цикла), end (конец цикла) и n (приращение) являются числовыми.

Примечание. Параметр n может быть как положительным, так и отрицательным. Если он положителен, параметр start должен быть меньше или равен параметру end, иначе цикл не будет выполняться. Если параметр n отрицателен, то параметр start должен быть больше или равен значению параметра end, чтобы выполнялось тело цикла. Если параметр Step не задан, то значение параметра n по умолчанию равно 1.

VBA выполняет цикл For в следующей последовательности:

1. Устанавливает значение переменной цикла i в значение start.

2. Сравнивает значение переменной цикла i и значение параметра end. Если переменная i больше, VBA завершает выполнение цикла. (Если значение параметра n отрицательно, то VBA прекращает выполнение цикла при условии, что значение переменной цикла i меньше значения параметра end.)

3. Выполняет операторы тела цикла.

4. Увеличивает значение переменной цикла i на 1 или на величину значения параметра n, если он задан.

5. Повторяет шаги со 2 по 4.

Н апример:

Вычислить сумму ряда

Фрагмент программы:

S = 0

For i = 1 To n

dS = Sin(pi * x) / i ^ 2

S = S + dS

Next i

Конструкция For Each . . . Next

Цикл For Each . . . Next, полезен, когда неизвестно, сколько элементов содержится в цикле.

Синтаксис конструкции цикла For Each . . . Next:

For Each element In group

операторы

Next element

Следует помнить следующие ограничения при использовании цикла For Each . . . Next:

  • Для наборов параметр element может быть только переменной типа variant, общей переменной типа object или объектом, перечисленным в Object Browser

  • Для массивов параметр element может быть только переменной типа Variant

  • Нельзя использовать цикл For Each . . . Next с массивом, имеющим определенный пользователем тип, так как переменная типа variant не может содержать значение определенного пользователем типа

Конструкция Do...Loop

Цикл Do применяется для выполнения блока операторов неограниченное число раз. Существует несколько разновидностей конструкции Do . . . Loop, но каждая из них вычисляет выражение-условие, чтобы определить момент выхода из цикла. Как и в случае конструкции If . . . Then условие должно быть величиной или выражением, принимающими значение False (нуль) или True (не нуль).

В следующей конструкции Do . . . Loop операторы выполняются до тех пор, пока значением условия является True (Истина):

Do While условие

операторы

Loop

Выполняя этот цикл, VBA сначала проверяет условие. Если условие ложно (False), он пропускает все операторы цикла. Если оно истинно (True), VBA выполняет операторы цикла, снова возвращается к оператору Do While и снова проверяет условие.

Следовательно, цикл, представленный данной конструкцией, может выполняться любое число раз, пока значением условия является не нуль или True (Истина). Отметим, что операторы тела цикла не выполняются ни разу, если при первой проверке условия оно оказывается ложным (False).

Другая разновидность конструкции Do . . . Loop сначала выполняет операторы тела цикла, а затем проверяет условие после каждого выполнения. Эта разновидность гарантирует, что операторы тела цикла выполняются по крайней мере один раз:

Do

операторы

Loop

While условие

Две другие разновидности конструкции цикла аналогичны предыдущим, за исключением того, что цикл выполняется, пока условие ложно (False):

  • Цикл не выполняется вообще или выполняется много раз:

Do Until условие

операторы Loop

  • Цикл выполняется по крайней мере один раз:

Do

операторы

Loop Until условие