На главную Напишите нам! Напишите нам!
25-04-2024
колонтитул в word 2007, 0000002111

Функции-процедуры VBA.

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

Основное различие между функцией-процедурой и другими процедурами, помимо того, что функции возвращают значение, а процедуры - нет, состоит в том, что в функции-процедуре используются ключевые слова Function и End Function.

Синтаксис:

Function Name([Arglist]) [As Type] 'VBA Statements [Name = expression] End Function

Function - ключевое слово, объявляющее начало функции.

Name - имя функции. Имена функций следуют тем же правилам, что и имена других идентификаторов VBA.

Arglist - список аргументов данной функции, необязательный элемент.

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

Name = expression - присваивание функции, которое указывает VBA, какое значение должна возвращать функция, необязательный элемент. Тем не менее, всегда следует включать оператор присваивания в функции-процедуры.

End Function - ключевые слова, заканчивающие функцию.

Даже если функция не имеет аргументов (например, Now, Date) в объявлении функции необходимо использовать круглые скобки.

Обычно функция предназначается для выполнения вычисления и для возвращения результата. При объявлении функции-процедуры указывается имя каждого аргумента, передаваемого функции. Имена аргументов в списке отделяются друг от друга запятой и должны следовать правилам, применяемым к любому идентификатору VBA.

Ниже представлен листинг использования простейшей функции-процедуры, которая убирает начальные и конечные пробелы и подсчитывает количество символов в выражении.

Без использования функции листинг бы выглядел так:

Из этого простого примера, думаю, понятна основная идея использования функций-процедур - улучшение читабельности программного кода и его сокращение (другими словами, функция-процедура пишется когда в программном коде более 2-3 раз встречается один и тот же "кусок" кода). Действительно, если бы наша функция-процедура состояла не из одной строки, а, скажем, из 10 строк; и программный код использовал бы эту функцию-процедуру 5 раз, то общий листинг программы был бы меньше на 38 строк.

Как уже указывалось ранее, VBA передает все аргументы в функцию-процедуру как типы Variant. Можно объявлять определенные типы данных для каждого аргумента в списке аргументов.

Аргументы с определенными типами используются по тем же знакомым причинам, по каким используются типизированные переменные или результаты функции. Определение типов аргументов для функции-процедуры также помогает пользователю при вызове функции вводить аргументы правильного типа в правильном порядке.

Процедуры и функции. Виды процедур

Процедуры (Sub) и функции (Function) VBA, объявление процедур и функций, макросы - специальный тип процедур VBA, типы процедур

Процедуры — это самые важные функциональные блоки языка VBA. В VBA вы можете выполнить только программный код, который содержится в какой-либо процедуре (обычной в стандартном модуле, событийной для элемента управления на форме и т.п.). Иногда начинающие пользователи пытаются записать команды прямо в область объявлений стандартного модуля и не могут понять, почему они не выполняются (сообщений о ошибке при этом не выдается — просто этот код становится "невидим" для компилятора). Причина проста — в разделе объявлений модуля (когда в верхних списках показываются значения (General) и (Declarations) могут быть только объявления переменных уровня модуля и некоторые специальные инструкции для компилятора. Весь остальной программный код должен находится внутри процедур.

В VBA предусмотрены следующие типы процедур:

Процедура типа Sub (подпрограмма) — универсальная процедура для выполнения каких-либо действий:

Sub Farewell()

MsgBox “Goodbye”

End Sub

Макрос в VBA — это просто процедура типа Sub, не имеющая параметров. Только макросы можно вызывать по имени из редактора VBA или приложения Office. Все другие процедуры нужно вызывать либо из других процедур, либо специальными способами, о которых будет рассказано ниже.

Процедура типа Function (функция) — тоже набор команд, которые должны быть выполнены. Принципиальное отличие только одно: функция возвращает вызвавшей ее программе какое-то значение, которое там будет использовано. Пример процедуры:

Function Tomorrow()

Tomorrow = DateAdd("d", 1, Date())

End Function

и пример ее вызова:

Private Sub Test1()

Dim dDate

dDate = Tomorrow

MsgBox dDate

End Sub

В тексте функции необходимо предусмотреть оператор, который присваивает ей какое-либо значение. В нашем случае это строка Tomorrow = DateAdd(" d", 1, Date()).

В принципе, процедуры типа Sub тоже могут возвращать значения — при помощи переменных (об этом — ниже). Зачем же тогда нужны функции? Все очень просто: функцию можно вставлять практически в любое место программного кода. Например, наш последний пример может выглядеть намного проще:

Private Sub Test 1()

MsgBox Tomorrow()

End Sub

В VBA предусмотрены сотни встроенных функций (и гораздо большее число предусмотрено в объектных моделях приложений Office). Даже в нашем примере используются две встроенные функции: Date(), которая возвращает текущую дату по часам компьютера и DateAdd(), которая умеет прибавлять к текущей дате определенное количество дней, недель, месяцев, лет и т.п. Про встроенные функции будет рассказано ниже.

В VBA имеются также процедуры обработки событий (event procedure) — процедуры типа Sub специального назначения, которые выполняется в случае возникновении определенного события. Пример был приведен выше (Private Sub UserForm_Click()). Про события подробнее будет рассказано в модуле про формы и события.

Есть еще процедуры типа Property (процедуры свойства). Они нужны для определения свойств создаваемого вами класса, а поскольку созданием своих классов мы заниматься не будем, то их можно не рассматривать.

колонтитулы в word 2007, 000000211111

Рекомендуем в повседневной деятельности:

Скачать - инструкцию по созданию загрузочной флешки = 50,02мин. 20.04.2014г.
Скачать - правила получение аттестата Webmoney  (30.61 MB) = 7. 5 мин. 11.01.2013г.
Скачать ссылки на каталоги - для регистрации сайта (69.5 MB) = 9. 7 мин. 01.10.2013г.
Скачать - wifi router настройка модема (41.72 MB) = 7 мин. 46 сек. 26.01.2013г.
Скачать - TDSSKiller диагностика, лечение систем (24,71 MB) = 6,02 мин. 01.12.2012г.
Скачать - пример готового проэкта в Lazarus (91,59 MB) = 1,31мин. 08.04.2013г.
Скачать - правила установки MySQL в Lazarus (20,17 MB) = 4,55 мин. 25.02.2013г.
Класс!

Во многих статьях беконечно повторяется утверждение, что тренды на рынке форекс встречаются чаще, чем на других рынках. Корни этого взгляда на природу рынку форекс восходят к 1970-80-м годам прошлого века, когда только началась торговля валютными фьючерсами, и многие валюты действительно формировали значительные тренды. Но соответствует ли это утверждение действительности сегодня?

В отличае от фондовых площадок, на валютной бирже торговля не прекращается в течение 24 часов в сутки, и поэтому, позволяет трейдерам извлекать прибыль от торговых операций внезависимости от часовых поясов и их местонахождения. В связи с этим, всегда можно воспользоваться услугами брокеров находящихся в различных по удаленности друг от друга торговых центров, таких как Лондон, Нью-Йорк, Токио и предоставляющих возможность открывать любые сделки.

Яндекс.Метрика
Копирование возможно при указании прямой индексируемой гиперссылки
п»ї
0000002