Лекции VBA. Можно выделить следующие разновидности макросов
Скачать 314.53 Kb.
|
Пользовательские функцииСоздание пользовательских функций или, как их иногда еще называют, UDF-функций (User Defined Functions) принципиально не отличается от создания макроса в обычном программном модуле. Разница только в том, что макрос выполняет последовательность действий с объектами книги (ячейками, формулами и значениями, листами, диаграммами и т.д.), а пользовательская функция - только с теми значениями, которые мы передадим ей как аргументы (исходные данные для расчета). При написании функций-процедур для использования в качестве UDF в рабочих листах Excel необходимо знать несколько фактов, помимо общих требований для определенных пользователем функций: Определенные пользователем функции, которые будут использоваться в Excel, не должны иметь имена, похожие на записи ссылок на ячейку (например, А2; С1В5); Любые строковые данные, возвращаемые из VBA в Excel, не должны иметь более 255 символов в длину. Если UDF возвращает строку, имеющую больше 255 символов в длину, в ячейку рабочего листа, Excel укорачивает строку до максимальной длины 255 символов перед вставкой в ячейку; При написании UDF, возвращающей значение даты для Excel убедитесь, что задаете тип результата функции как Date. Excel применяет формат Date для результата функции в ячейке рабочего листа только, если результат имеет VBA-тип Date. Структура пользовательской функции Function имя_функции(арг1 As тип, арг2 As тип …) As тип Тело функции имя_функции = выражение End Function Досрочный выход из функции выполняется с помощью оператора Exit Function Порядок создания пользовательской функцииЧтобы создать пользовательскую функцию для расчета, например, налога на добавленную стоимость (НДС) откроем редактор VBA, добавим новый модуль через меню Insert - Module и введем туда текст нашей функции: Обратите внимание, что в отличие от макросов функции имеют заголовок Function вместо Sub и непустой список аргументов (в нашем случае это Summa). Если тив переменных и функции не задан, то тип интерпретируется как Variant. После ввода кода наша функция становится доступна в обычном окне Мастера функций (Вставка - Функция) в категории Определенные пользователем (User Defined): После выбора функции выделяем ячейки с аргументами (с суммой, для которой надо посчитать НДС) как в случае с обычной функцией: Обратите внимание, что в диалоговом окне выводится : «Справка недоступна». Для того, чтобы отображать справку для пользовательской функции надо: В редакторе VBA открыть окно Object Browser View → ObjectBrowser. В списке выбрать пользовательскую функцию. Эта функция располагается по алфавиту. Щелкнув правой кнопкой по названию функции, выбрать Properties … В диалоговом окне Member Options ввести пояснения в текстовое окно Description. ВАЖНО Чтобы пояснения отображались в окне Мастер функций, надо Перед пользовательской функции указать доступ Public: При вызове функции в окне будет отображаться: ВетвленияКак и во всех других языках программирования, в VBA имеются различные управляющие конструкции, позволяющие изменять порядок выполнения программы При отсутствии управляющих конструкций операторы программы выполняются последовательно, начиная с первого и кончая последним Хотя в некоторых самых простых случаях этого и бывает достаточно, обычно все-таки требуется изменять порядок выполнения операторов при выполнении определенных условий, либо пропуская выполнение некоторых операторов, либо, наоборот, многократно повторяя их. Оказывается, для реализации любых алгоритмов достаточно иметь только два вида управляющих конструкций: ветвления и циклы Управляющие конструкции ветвления позволяют проверить некоторое условие, а затем, в зависимости от результатов этой проверки, выполнить ту или иную группу операторов Для организации ветвлений в VBA используются различные формы оператора ветвления if и оператор выбора Select Case Краткая форма оператора ветвления if может иметь как однострочную, так и блочную форму. Простейшая, краткая форма оператора if используется для проверки одного условия, а затем, в зависимости от результата проверки, либо выполнения, либо пропуска одного оператора или блока из нескольких операторов If <условие> Then <блокОператоров1> [Else <блокОператоров2>] End If В качестве условия можно использовать логическое выражение, возвращающее значение True (ИСТИНА) или False (ЛОЖЬ). Если условие истинно, выполняется первый блок операторов, заключенный между ключевыми словами Then и Else, а в противном случае — второй блок, заключенный между ключевыми словами Else и End If. Условия, которые записываются в условном операторе после слова If, бывают простые и сложные. Простые условия имеют следующую структуру:
Операции отношения
Например: a+b>6, Sin(x)<=0, f*h<>k+d Оператор if может иметь краткую и полную форму. В краткой форме, если условие возвращает значение False, оператор или блок операторов, заключенных между ключевыми словами Then и End if, составляющих тело краткого оператора ветвления, не будет выполняться. |