В программах на VBA можно использовать стандартный набор операций над данными. Имеются три
основных типа операций:
Приведем
операции VBA указанных и дополнительных категорий. Математические операции.
Операнд!] +
[Операнд2] |
Сложение |
||
[ Операнд!]
-- [Операнд2] |
Вычитание |
||
- [Операнд] |
Перемена знака |
||
Операнд!] *
[Операнд2] |
Умножение |
||
[Операнд!] /
[Операнд2] |
Деление |
||
[Операнд1] \
[Операнд2] |
Целочисленное
деление |
||
[Операнд1] Mod
[Операнд2] |
Остаток от деления
по модулю |
||
[Операнд1] ^
[Операнд2] |
Возведение в
степень |
||
Операции
отношения.
[Операнд1] <
[Операнд2] |
Меньше |
||
[Операнд1] >
[Операнд2] |
Больше |
||
[Операнд1] <=
[Операнд2] |
Меньше или равно |
||
[Операнд1] >=
[Операнд2] |
Больше или равно |
||
[Операнд1] <>
[Операнд2] |
Не равно |
||
[Операнд1] =
[Операнд2] |
Равно |
||
[Операнд1] Is
[Операнд2] |
Сравнение двух
операндов, содержащих ссылки на объекты |
||
[Операнд1] Like
[Операнд2] |
Сравнение двух
строковых выражений |
||
Логические
операции.
[Операнд1] And
[Операнд2] |
Логическое умножение |
||
[Операнд1] Or
[Операнд2] |
Логическое сложение |
||
[Операнд1] Хог
[Операнд2] |
Исключающее
or (или) |
||
[Операнд1] Not
[Операнд2] |
Логическое отрицание |
||
[Операнд1] Imp
[Операнд2] |
Логическая импликация
(в настоящее время почти не используется) |
||
[Операнд1] Equ
[Операнд2] |
Логическая эквивалентность
(в настоящее время почти не используется) |
||
Другие
операции.
[Строка1] &
[Строка2] |
Сложение строк.
Для сложения строк допустимо использование операции [Строка1] + [Строка2]
, но предпочтительнее, во избежания путаницы, применять операцию со
знаком & |
||
VBA выполняет
операции в соответствии с их приоритетами, что обеспечивает однозначность в
трактовании значений выражений. Приведем приоритеты выполнения операций.
Приоритет |
Операция |
||
1 |
Вызов функции
и скобки |
||
2 |
^ |
||
3 |
- (смена знака) |
||
4 |
*, / |
||
5 |
\ |
||
6 |
Mod |
||
7 |
+, - |
||
8 |
>, <,
>=, <=, о, = |
||
9 |
Not |
||
10 |
And |
||
11 |
Or |
||
12 |
Xor |
||
13 |
Equ |
||
14 |
Imp |
||
В VBA имеется
большой набор встроенных функций и процедур, использование которых существенно
упрощает программирование. Эти функции можно разделить на следующие основные
категории:
Ниже рассмотрены
основные функции из этих категорий.
В VBA имеется
большой список математических функций, позволяющих произвести любые вычисления.
Функция |
Возвращаемое
значение |
||
Abs (число) Atn (число) Cos (число) |
Модуль (абсолютная величина)числа Арктангенс Косинус |
||
Ехр (число) |
Экспонента,
т. е. результат возведения основания натурального логарифма в указанную
степень |
||
Log (число) |
Натуральный
логарифм |
||
Rnd (число) |
Случайное число
из интервала [0,1). Если число меньше
нуля, то Rnd возвращает каждый раз одно и то же число, используя аргумент
в качестве опорного числа; если число больше нуля или аргумент опущен,
то — следующее случайное число в последовательности; если число равняется
нулю, то — случайное число, возвращенное при предыдущем вызове этой
функции. Перед вызовом
функции Rnd используйте инструкцию Randomize без аргумента |
||
Sgn (число) |
Знак числа |
||
Sin (число) |
Синус |
||
Sqr (число) |
Квадратный корень
из числа |
||
Tan (число) |
Тангенс |
||
Fix (число)
И Int (число) |
Обе функции,
int и Fix, отбрасывают дробную часть числа и возвращают целое значение. Различие между
функциями int и Fix состоит в том, что для отрицательного значения
аргумента число функция int возвращает ближайшее отрицательное целое
число, меньшее либо равное указанному, a Fix — ближайшее отрицательное
целое число, большее либо равное указанному |
||
Функции проверки
типов проверяют, является ли переменная выражением специфицированного типа.
Функция |
Проверка |
||
IsArray (переменная) IsDate (переменная) IsEmpty (переменная) IsError (переменная) IsNull (переменная) IsNumeric (переменная) IsObject (переменная) |
Является ли переменная массивом Является ли переменная датой Была ли переменная описана инструкцией Dim Является ли переменная кодом ошибки Является ли переменная пустым значением (Null) Является ли переменная числовым значением Является ли переменная
объектом |
||
Функции
преобразования форматов
Преобразование
строки в число и обратно осуществляют следующими функциями.
Val (строка) |
Возвращает числа,
содержащиеся в строке, как числовое значение соответствующего типа |
||
Str (число) |
Возвращает значение
типа variant (String), являющееся строковым представлением числа |
||
В качестве
допустимого десятичного разделителя функция str воспринимает только точку. При
наличии другого десятичного разделителя (например, запятой) для преобразования
чисел в строки следует использовать функцию cstr, описанную ниже.
Чтобы представить
числовое значение как дату, время, денежное значение или в специальном формате,
следует использовать функцию Format.
Format |
Возвращает значение типа variant (string), содержащее выражение, отформатированное согласно инструкциям, заданным в описании формата. Синтаксис: Format (Выражение [, Формат [, ПервыйДеньНедели [ , ПерваяНеделяГода] ] ])
|
||
При построении
пользовательского числового формата возможно использование следующих символов.
0 |
Резервирует
позицию цифрового разряда. Отображает цифру или нуль. Если у числа,
представленного аргументом, есть какая-нибудь цифра в той позиции
разряда, где в строке формата находится о, функция отображает эту
цифру аргумента, если нет — в этой позиции отображается нуль |
||
# |
Резервирует
позицию цифрового разряда. Отображает цифру или ничего не отображает.
Если у числа, представленного аргументом, есть какая-нибудь цифра
в той позиции разряда, где в строке формата находится #, функция отображает
эту цифру аргумента, если нет — в исходной позиции не отображается
ничего. Действие данного символа аналогично действию о, за исключением
того, что лидирующие нули не отображаются |
||
. |
Резервирует
позицию десятичного разделителя. Указание точки в строке формата определяет,
сколько разрядов необходимо отображать слева и справа от десятичной
точки |
||
% |
Резервирует
процентное отображение числа |
||
, |
Разделитель
разряда сотен от тысяч |
||
|
Разделитель
часов, минут и секунд в категории форматов Время (Time) |
||
/ |
Разделитель
дня, месяца и года в категории форматов Дата (Date) |
||
E+, E-, e+,
e- |
Разделитель
мантиссы и порядка в экспоненциальном формате |
||
Кроме функций
vai и str в VBA имеются следующие функции преобразования типов выражений
из данного в указанный.
Функция |
Тип, в который
преобразуется выражение |
||
CBool (Выражение) |
Boolean |
||
CByte (Выражение) |
Byte |
||
CCur (Выражение) |
Currency |
||
CDate (Выражение) |
Date |
||
СDbl (Выражение) |
Double |
||
CDec (Выражение) |
Decimel |
||
CInt (Выражение) |
Integer |
||
CLng (Выражение) |
Long |
||
CSng (Выражение) |
Single |
||
CVar (Выражение) |
Variant |
||
CStr (Выражение) |
String |
||
В VBA имеются
следующие функции обработки строковых выражений.
Функция |
Возвращаемое
выражение |
||
ASC |
Возвращает ASCII-код начальной буквы строки. Синтаксис: Asc (Строка) |
||
Chr |
Преобразует ASCII-код в строку. Синтаксис: Chr (Код) Например Chr ( 13 ) — переход на новую строку, Chr ( 97 ) = "а" |
||
Lease |
Преобразует строку к нижнему регистру. Синтаксис: Lease (Строка) |
||
Ucase |
Преобразует строку к верхнему регистру. Синтаксис: Ucase (Строка) |
||
Left |
Возвращает подстроку,
состоящую из заданного числа первых символов исходной строки. Синтаксис: Left (string, length) Аргументы:
|
||
Right |
Возвращает строку,
состоящую из заданного числа последних символов исходной строки. Синтаксис: Right (string, length) Аргументы:
|
||
Mid |
Возвращает подстроку
строки, содержащую указанное число символов. Синтаксис: Midlstring, start [, length]) Аргументы:
|
||
Len |
Возвращает число символов строки. Синтаксис: Len (Строка) |
||
Функция |
Возвращаемое
выражение |
||
LTrim |
Возвращает копию строки без пробелов в начале. Синтаксис: LTrim (Строка) |
||
Rtrim |
Возвращает копию строки без пробелов в конце. Синтаксис: RTrim (Строка) |
||
Trim |
Возвращает копию строки без пробелов в начале и в конце Синтаксис: Trim (Строка) |
||
Space |
Возвращает строку, состоящую из указанного числа пробелов. Синтаксис: Space (Число) |
||
String |
Возвращает строку,
состоящую из указанного числа повторений одного и того же символа. Синтаксис: String (number, character) Аргументы:
|
||
StrComp |
Возвращает результат сравнения двух строк. Синтаксис: StrComp(stringl, string2 [, compare]) Аргументы:
Возвращаемые значения:
|
||
InStr |
Возвращает позицию первого вхождения одной строки внутри другой строки. Синтаксис: InStr ( [start, ] stringl, st'ring2 [ , compare]) Аргументы:
|
||
В VBA имеются следующие, функции времени и даты.
Функция |
Возвращаемое
значение |
||
Date |
Возвращает значение
типа Variant (Date) , содержащее текущую системную дату |
||
Time |
Возвращает значение
типа Variant (Date) , содержащее текущее время по системным часам
компьютера |
||
Now |
Возвращает значение
типа Variant (Date) , содержащее текущую дату и время по системному
календарю и часам компьютера |
||
Hour, Minute,
Second |
Возвращают значения типа variant (integer), содержащее целое число, которое представляет часы, минуты и секунды в значении времени. Синтаксис: Hour (время) Minute (время) Second (время)
|
||
Day, Month,
Year |
Возвращает значение
типа Variant (Integer), содержащее целое число, которое представляет
день, месяц, год в значении даты. Синтаксис: Month (дата) Year (дата)
Q дата —значение даты или выражение, ее определяющее |
||
Функция |
Возвращаемое
значение |
||
Weekday Timer DateDif
f |
В следующем примере переменной день присваивается 17, Месяц — May, Год— I960: День Рождения = #Мау 17, 1960# День = Day (День Рождения) Месяц = Month (День Рождения) Год = Year (День Рождения) Возвращает значение типа Variant (integer) , содержащее целое число, представляющее день недели. Синтаксис: Weekday (date, [ f irstdayofweek] )
Синтаксис: DateDif f (interval, datel, date2[, firstdayofweek [, f irstweekof year] ] ) Аргументы:
|
||
Функция |
Возвращаемое
значение |
||
DatePart DateAdd TimeSerial DateSerial
TimeValue |
Возвращает значение типа variant (Integer) , содержащее указанный компонент даты. Синтаксис: DatePart (interval, date [, firstdayofweek[, firstweekofyear] ] ) Возвращает значение типа Variant ( Date ) , содержащее дату, к которой добавлен указанный временной интервал. Синтаксис: DateAdd'(interval, number, date) Аргументы:
В следующем примере переменной день присваивается 03/17/63-: День = DateAdd ("m", 34, |05/17/60#) Возвращает значение типа Variant (Date) , содержащее значение времени, соответствующее указанным часу, минуте и секунде. Синтаксис: TimeSerial (hour, minute, second) Аргументы:
Возвращает значение
типа Variant (Date) , соответствующее указанному году, месяцу и дню.
Синтаксис: DateSerial (year, month, day) Аргументы:
В следующем
примере переменной Дата присваивается 05/17/60: Дата
= DateSerial (1960, 5, 17) Преобразует строку в формат времени |
||
Кроме перечисленных
выше основных категорий функций в VBA имеются также функции выбора, которые
дублируют некоторые аспекты операторов условного перехода. Ниже приведены эти
функции.
Функция |
Возвращаемое
значение |
||
lit Choose Switch |
Возвращает одну из двух альтернатив. Синтаксис:
Возвращает значение, выбранное из списка аргументов. Синтаксис: Choose (индекс, вариант-1[, вариант-2, ... [, вариант-п] ] )
Действие функции
Choose: если индекс равняется 1 , возвращается первый элемент списка,
если индекс равняется 2, возвращается второй элемент списка и т. д.
Функцию choose можно использовать для выбора одного из возможных значений,
представленных в виде списка. В следующем примере, если аргумент Выбор
принимает значение 3, то переменной РезультатВыборы присваивается
значение "три": РезультатВыборы = Choose (Выбор, "один",
"два", "три") Возвращается значение, соответствующее
первому истинному выражению в списке. Синтаксис: Switch ( выражение-
1, значение-1, выражение-2, значение-2 ... [, выражение-n, значение-п]
] ) |
||
Некоторые
функции имеют по две версии, одна из которых возвращает тип данных variant а
другая — тип данных string. Первая версия является более удобной, так как при
этом для значений типа variant преобразование типов данных выполняется автоматически.
Вторая версия, возвращающая тип string, использует меньше памяти и может быть
полезна в следующих случаях:
Перечисленные
ниже функции возвращают значения типа String, если к их имени добавляется символ
доллара ($). Эти функции имеют такое же применение и синтаксис, как и их эквиваленты
без символа доллара, возвращающие тип Variant.
Chr$ |
CurDir$ |
Date$ |
Dir$ |
||
Error$ |
Format$ |
Input$ |
InputB$ |
||
LCase$ |
Left$ |
LTrim$ |
MidS |
||
Right$ |
Rtrim$ |
Space$ |
Str$ |
||
String$ |
Тime $ |
Trim$ |
Ucase$ |
||