Встроенные функции VBA

RSS, Twitter, Vkontakte, Facebook

Основы программирования VBA

Встроенные функции VBA

Автор: Владимир Ткаченко

Источник: Обучение в интернет

Практически весь программный код модулей VBA содержится в процедурах двух типов Sub (подпрограммы) и Function (функции). Основная задача процедуры-функции Function - это вычисление некоторого значения и возвращение его в точку вызова процедуры-функции.

Синтаксис процедуры-функции Function:
Function Имя_Функции(аргументы As <тип>) As <тип>
<блок операторов>
Имя_Функции = Возвращаемое_Значение
End Function

Процедуры-функции Function могут быть использованы в различных выражениях.

Например, самая простая процедура-функция Function:
Function F1(x As Currency) As Currency
F1=x ^ 10
End Function

Function F1(x) можно использовать в дальнейших вычислениях (программном коде модуля). Процедуру типа Function можно выполнить, только вызвав ее из другой процедуры. Для этого в вызывающей процедуре необходимо присвоить имя данной F1(x) некоторой переменной. Например, Function F1(x) можно использовать в процедуре MySub (), присвоив переменной "у" имя F1(x) . Скриншот программного кода модуля представлен на рис.1.

Процедура-функция Function  вызывается из процедуры типа Sub
Рис. 1.

Здесь Function F1(x)=x10 для значения x=9 возвращает в вызывающую процедуру MySub () значение 3,486785E+09. Если для возвращаемого функцией значения или переменной, которая используется в процедуре VBA, не объявлен тип данных, то, по умолчанию, будет задан тип данных Variant.

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

Функции возвращают результирующее значение вместо их имени, Результирующее значение используется в дальнейших вычислениях. Как правило, функции требуют наличия аргументов, которые записываются в скобках через запятую. Но некоторые функции не требует аргументов. Например, функция Now(), которая не требует аргументов, возвращает текущую системную дату и время. Функции можно использовать для создания новых выражений или функций.

Встроенные функции и процедуры-функции Function вызываются одинаково. Как вставить функцию в текст программы? Чтобы использовать функцию в выражениях, необходимо ввести ее имя в оператор VBA. Для вызова встроенной функции, не требующей аргументов, достаточно ввести ее имя (например, Now) в код программы модуля (рис.2).

Встроенная функция, не требующая аргументов Now
Рис. 2.

Для вызова функции, требующей ввода одного или нескольких аргументов, необходимо ввести в правой части оператора присваивания ее имя с заключенными в скобках параметрами (значениями аргументов). Например, для вызова встроенной Function Log (N) с одной переменной N в процедуре типа Sub переменной Log_N присвоено имя функции Log (50) со значением аргумента равного 50. Скриншот программного кода модуля представлен на рис. 3.

Встроенная функция Log с одним аргументом
Рис. 3.

Здесь встроенная Function Log (N) для значения аргумента равного 50 возвращает значение 3,91202300542815 в точку вызова Log (50) вызывающей процедуры "Sub Натуральный_логарифм ()". Функцию можно вызвать как с помощью отдельного оператора VBA, так и поместив ее имя со списком значений аргументов (параметров) в формулу или выражение в программе на VBA. В VBA для сокращения записи используется механизм вложения функций, который позволяет указывать вызов одной функции в качестве аргумента для другой функции. В этом случае возвращаемое первой функцией значение используется в качестве аргумента для следующей функции.

Functions VBA можно условно разделить на несколько основных категорий:

  • Обработки строк (InStr, Lcase, Left, Len, Mid, Right и т.д.);
  • Преобразования одного типа данных в другой (CBool, Ccur, Cdate, Cint, CLng и т.д.);
  • Дат и времени (Date, Time, Now, Month, Hour, Minute, Second и т.д.);
  • Математические Functions (Abs(N), Atn(N), Cos(N), Exp(N), Fix(N), Int(N), Log(N) и т.д.);
  • Прочие Functions.

В справке: "Microsoft Office Access 2003" встроенные Functions представлены в алфавитном порядке и на английском языке. В справке: "Microsoft Office Access 2007" встроенные функции сгруппированы по категориям и представлены в алфавитном порядке. Справка и инструкции по функциям в Access 2007 изложены на русском языке.

Подпишитесь на мою рассылку СУБД MS Access 2003 -это просто!