Автор работы: Пользователь скрыл имя, 15 Июля 2013 в 15:27, лекция
Функция-процедура - это особый вид процедуры VBA, возвращающей результат. Пользовательские функции-процедуры, как и встроенные функции VBA, могут иметь необязательные и именованные аргументы. Для записи функции-процедуры нельзя использовать макрорекордер, хотя можно редактировать записанный рекордером макрос и превращать его в функцию-процедуру. Основное различие между функцией-процедурой и другими процедурами, помимо того, что функции возвращают значение, а процедуры - нет, состоит в том, что в функции-процедуре используются ключевые слова Function и End Function.
Do
Statements
Loop Until Condition
Condition - логическое выражение для детерминанта цикла
Statements - один, ни одного или несколько операторов, которые составляют тело цикла
Loop - ключевое слово, указывает на окончание тела цикла и обозначает место, из которого VBA возвращается в начало цикла после проверки условия
VBA выполняет цикл пока
логическое выражение,
В остальном цикл Do Loop Until полностью аналогичен циклу Do Loop While.
Листинг, использующий цикл Do Loop Until для подсчета цифр от 1 до 10, будет выглядеть так:
Следует сказать, что представленные выше примеры даны чисто в познавательных целях, чтобы можно было понять саму суть организации неопределенных циклов с проверкой условий до и после выполнения тела цикла. Сама же гибкость неопределенных циклов здесь явно не просматривается.
Циклы VBA (ч.3). Вложенные циклы
Циклы можно помещать внутрь друг друга. Помещение одной структуры цикла в другую называется вложением циклов. Можно делать вложение структур циклов разного типа.
При вложении циклов надо соблюдать определенные правила:
При вложении циклов For..Next каждый цикл должен иметь свою уникальную переменную счетчика;
При вложении циклов For Each..Next каждый цикл должен иметь свою уникальную element-переменную;
Если используется оператор Exit For или Exit Do во вложенном цикле, этим оператором заканчивается только выполняемый в данный момент цикл. VBA продолжает выполнение следующего цикла более высокого уровня.
В нижеприведенном листинге показан простейший пример использования вложенных циклов For..Next:
Прерывание выполнения макроса или процедуры
Зачастую программисты допускают ошибки в написании кода, которые приводят к зацикливанию программы (бесконечный цикл). Для прерывания выполнения VBA необходимо нажать клавишу Esc или комбинацию клавиш Ctrl+Break. VBA заканчивает выполнение текущего оператора, переходит в состояние ожидания и отображает окно сообщения о runtime-ошибке.