Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
02_ЛР_VBA.doc
Скачиваний:
2
Добавлен:
09.11.2019
Размер:
286.72 Кб
Скачать

Условный оператор

Условный оператор выполняет определенные инструкции в зависимости от значения условия и может быть использован для описания конструкций блок-схем представленных на рис.2.

нет

да

а) Обход

нет

да

б) Ветвление

да

нет

да

в) Множественное

ветвление

нет

Рис.2

Условный оператор имеет две формы синтаксиса: строчную и блочную.

Синтаксис строчной формы:

If <условие> Then <инструкции 1> [Else <инструкции 2>]

Условие представляет собой логическое выражение или набор логических выражений объединенных логическими операциями.

При возвращении условием значения True, выполняются инструкции, следующие за ключевым словом Then, а при возвращении условием значения False, выполняются инструкции, следующие за ключевым словом Else.

Примеры:

If A>B Then P=A : A=B : B=P

If A>B And R=0 Then C=A+B : К=1 Else C=A*B : К=2

If A>B Then C=A+B Else If A<B Then C=A*B Else C=0

Синтаксис блочной формы:

I f <условие_1> Then

[ инструкции_1]

[

Направление проверки условий

ElseIf <условие_2> Then

[ инструкции_2]]

...

[ElseIf <условие_N> Then

[ инструкции_N]]

[Else

[ инструкции_else]]

End If

При возвращении условием_1 значения True, выполняются операторы, расположенные в нижеследующих строках, после чего управление передается в строку, следующую за ключевым словом End If, а при возвращении условием_1 значения False управление передается в строку, содержащую условие_2. Выполнение последующих проверок осуществляется аналогично. Если ни одно из условий не равно True, то выполняются операторы, расположенные в строках после ключевого слова Else, либо, если ключевое слово Else отсутствует, то управление передается в строку, следующую за ключевым словом End If.

Примеры:

' Пример 1

If A > B Then

P = A

A = B

B = P

End If

' Пример 2

If K = 1 Then

C = A + B

ElseIf K = 2 Then

C = A - B

ElseIf K = 3 Then

C = A * B

Else

C = 0

End If

Оператор выбора

Оператор выбора, подобно оператору If … Then … Else, используется для выполнения тех или иных инструкций в зависимости от значения условия.

Синтаксис:

Select Case переменная

Case список_значений_1

[инструкции_1]

[Case список_значений_2

[инструкции_2]]

...

[Case список_значений_n

[инструкции_n]]

[Case Else

[инструкции_else]]

End Select

В операторе выбора вместо вычисления логического условия выполняется сравнение значения переменой с каждой из величин, заданных параметром список_значений.

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

  • списка значений, перечисленных через запятую;

  • диапазона значений в виде начальное_значение To конечное_значение;

  • выражения сравнения в виде Is оператор_сравнения значение.

В инструкции может быть произвольное число блоков Case. Если ни одно из условий не является истинным, то выполняются инструкции блока Case Else.

Пример:

Select Case K

Case 1

C = A + B

Case 2

C = A - B

Case 3

C = A * B

Case Else

C = 0

End Select

Отладка программ

При написании программ пользователь независимо от его опыта допускает те или иные ошибки. Какие же бывают ошибки и как с ними бороться? Условно ошибки можно поделить на три типа: ошибки компиляции, выполнения и логические ошибки.

Ошибки компиляции

Ошибки компиляции возникают, если VBA не может интерпретировать введенный код. Например, при некорректном вводе числа скобок, неправильном имени, неполном вводе инструкции и т. д. Некоторые из этих ошибок обнаруживаются VBA при завершении набора строки с инструкцией в редакторе кода и после нажатия клавиши <Enter>. Строка, в которой содержится ошибка, выделяется красным цветом, и на экране отображается диалоговое окно с сообщением о возможной причине, вызвавшей ошибку. (Рис 1)

Рис. 1. Сообщение об ошибке компиляции, обнаруженной при вводе инструкции

Ошибки выполнения

Ошибки выполнения возникают после успешной компиляции программы при ее выполнении. Причинами таких ошибок могут быть, например:

  1. Некорректная информация при считывании файла с диска.

  2. Некорректные данные, введенные пользователем, например требуется число, а пользователь вводит строковую информацию.

  3. Некорректность вычислений, например деление на ноль.

В этих и подобных случаях на экране отображается диалоговое окно Microsoft Visual Basic с сообщением о номере ошибки и возможной причине, ее вызвавшей (рис. 2).

Рис. 2. Сообщение об ошибке выполнения в диалоговом окне Microsoft Visual Basic

Если в диалоговом окне Microsoft Visual Basic нажать кнопку Отладка (Debug), то в строке модуля желтым цветом будет выделена строка, вызвавшая ошибку и по причине которой выполнение программы было прервано. Кроме того, эта строка будет помечена стрелочкой. При прерывании выполнения программы VBA переходит в режим прерывания. Одной из наиболее удобных возможностей режима прерывания являются возможность узнать текущее значение переменных и свойств. Для этого достаточно расположить указатель мыши на имени свойства или переменной. Это вызовет появление всплывающей подсказки с текущим значением переменной или свойства.

Логические ошибки

Логические ошибки труднее всего обнаружить и устранить. Эти ошибки не приводят к прерыванию выполнения программы, т. е. визуально все идет гладко и выглядит так, как будто программа работает безупречно. Но при этом. программа выдает неверные результаты. Локализация логических ошибок связана с тщательным анализом алгоритма программы с привлечением средств отладки VBA.

Инструкция Option Explicit

Простейшим средством предотвращения случайных ошибок является использование инструкции Option Explicit. Эта инструкция предписывает явно описывать все переменные, встречающиеся в программе. Использование инструкции option Explicit позволяет избежать следующей трудно отслеживаемой ошибки. Предположим, что в программе используется переменная с именем «ссуда», а при наборе имени этой переменной где-то в программе вместо русской буквы «с» по ошибке набрана латинская буква «с». Визуально, эти имена ничем не отличаются друг от друга, но воспринимаются программой как имена разных переменных. Если бы использовалась инструкция option Explicit, а значит имело место явное описание переменной «ссуда», то компилятор указал бы на переменную «ссуда» с латинской буквой «с», как на неописанную, и эта, трудно отслеживаемая ошибка, была бы быстро найдена.

Пошаговое выполнение программ

Редактор VBA позволяет выполнять пошаговую отладку программы. Ее можно выполнить либо при помощи панели инструментов Отладка (Debug), либо меню Отладка (Debug), которое включает команды и соответствующие комбинации клавиш (рис. 3). Если панель инструментов Отладка (Debug) не отображена на экране, то ее можно отобразить, выполнив команду Вид, Панели инструментов, Отладка (View, Toolbars, Debug).

Рис. 3. Панель инструментов Отладка и раскрывающееся меню Отладка

Для выполнения программы в пошаговом режиме используются четыре команды:

  1. Команда Отладка, Шаг с заходом (Debug, Step Into), либо F8 осуществляет последовательную шаг за шагом отладку всей программы, включая процедуры, вызываемые в программе.

  2. Команда Отладка, Шаг с обходом (Debug, Step Over), либо Shift+F8 осуществляет последовательную шаг за шагом отладку всей программы, исключая процедуры, т. е. если встречается процедура, то она выполняется целиком, а не пошагово, как это делается в команде Отладка, Шаг с заходом (Debug, Step Into).

  3. Команда Отладка, Шаг с выходом (Debug, Step Out), либо Ctrl+Shift+F8 завершает выполнение текущей процедуры и останавливает процесс пошаговой отладки на следующей после вызвавшей ее инструкции программы.

  4. Команда Отладка, Выполнить до текущей позиции (Debug, Run to Cursor), либо Ctrl+F8 выполняет программу до инструкции, на которой установлен курсор.

Точка останова

Точка останова устанавливается или снимается с помощью команды Отладка, Точка останова (Debug, Toggle Breakpoint), либо посредством кнопки Точка останова (Toggle Breakpoint) панели инструментов Отладка (Debug). На листе модуля точки останова выделяются полосой кирпичного цвета и кругом того же цвета (Рис. 4).

Рис. 4. Точки останова

В одном проекте может быть несколько точек останова. Точки останова предназначены для приостановки выполнения программы. Все инструкции, расположенные выше, между и ниже точек останова, выполняются в обычном режиме.

Одновременно снять все точки останова можно, выполнив команду Отладка, Снять все точки останова (Debug, Clear All Breakpoint).

Вывод значений свойств и переменных

Одним из наиболее удобных средств режима отладки является возможность узнать текущее значение переменных и свойств. Для этого достаточно расположить указатель мыши на имени свойства или переменной. Это вызовет появление всплывающей подсказки с текущим значением переменной или свойства. Для установки режима вывода всплывающей подсказки с текущими значениями данных должен быть установлен флажок Подсказки значений данных (Auto Data Tips) диалогового окна Параметры (Options), вызываемого командой Сервис, Параметры (Tools, Options).

Другим способом отслеживания текущих значений данных является использование диалогового окна Контрольные значения (Quick Watch), отображаемого на экране с помощью команды Вид, Окно контрольного значения (View, Quick Watch), либо команды Отладка, Контрольное значение (Debug, Quick Watch) (рис. 5). Диалоговое окно Контрольные значения (Quick Watch) применяется для одновременного отображения текущих значений нескольких данных. Команда Отладка, Добавить контрольное значение (Debug, Add Watch) позволяет добавить новые контрольные значения в диалоговом окне Контрольные значения (Quick Watch).

Удаление контрольного значения из диалогового окна производится посредством его выделения и нажатия клавиши <Delete>.

Окно Локальные переменные (Locals Window), отображаемое на экране командой Вид, Окно локальных переменных (View, Locals Window), выводит значения всех переменных текущей процедуры, а не только специально выбранных, как это происходит в окне Контрольные значения (Quick Watch).

Внешний же вид и структура обоих окон, Локальные переменные (Locals Window) и Контрольные значения (Quick Watch), одни и те же.

Рис. 5. Диалоговое окно Контрольные значения

Окно Проверка (Immediate Window), отображаемое на экране командой Вид, Окно отладки (View, Immediate Window), предоставляет пользователю возможность:

  • Набирать и вычислять отдельные инструкции VBA. Для этого достаточно в окне Проверка (Immediate Window) ввести соответствующую инструкцию и нажать клавишу <Enter>. Единственным ограничением на использование, инструкции является то, что она должна быть набрана в одну строку. Например,

s=0: For i=1 to 5: s=s+i^2: Next i: MsgBox s

  • Определять текущие значения переменных и свойств. Для этого в окне Проверка (Immediate Window) надо набрать вопросительный знак, имя переменной или свойства и нажать клавишу <Enter>. Например,

  • Устанавливать новые текущие значения переменных. Для этого в окне Проверка (Immediate Window) надо набрать имя переменной, знак равенства и новое значение переменной и нажать <Enter>:

х = 15

  • Выводить любые данные и значения переменных непосредственно из кода программы при помощи метода Print объекта Debug. Ниже приведен пример программного способа вывода текстового сообщения в окно immediate:

Debug.Print "Test message."

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]