Функция возвращает значение типа Integer, однозначно определяющее по таблице значений.
Таблица 6.5 Возвращаемые значения функции VarType
Тип |
Номер |
Тип |
Номер |
Тип |
Номер |
Empty |
0 |
Currency |
6 |
Variant |
12 |
Null |
1 |
Date |
7 |
DataObject |
13 |
Integer |
2 |
String |
8 |
Decimal |
14 |
Long |
3 |
Object |
9 |
Byte |
17 |
Single |
4 |
Error |
10 |
UserDefinedType |
36 |
Double |
5 |
Boolean |
11 |
Array |
8209 |
TypeName (переменная)
Функция возвращает одну из следующих строк: Byte,
Integer, Long, Single, Double, Currency, Decimal, Date, String,
Boolean, Error, Empty, Null, Object, Object Type, Unknown (не-
известная переменная) и Nothing (переменная, не содержащая ссылки на объект).
Если переменная является массивом, то возвращается строка с типом и пустыми скобками. Например, если определен массив Array типа integer,
TypeName(Array) = "Integer()".
Возможности функции TypeName ярко демонстрируются в случае, когда действительный тип объекта требуется узнать во время выполнения программ.
6.4. Процедуры и функции работы со строками
В VBA существует стандартный арсенал функций для работ со строками.
|
|
Таблица 6.6 |
|
Функции работы со строками |
|
Функция |
|
Описание |
|
|
|
Len(строка) |
|
Возвращает длину строки |
98
Продолжение табл. 6.6
Space(число) |
Создает строку, содержащую ука- |
|||
|
занное число пробелов |
|
||
String (число, символ) |
Создает строку, содержащую ука- |
|||
|
занное число указанных символов |
|||
StrComp (строка1, |
Возвращает |
результат |
сравнения |
|
строка2 [, сравнение]) |
строк. |
Необязательный |
параметр |
|
|
сравнение указывает, каким спосо- |
|||
|
бом производить сравнение: двоич- |
|||
|
ным - 0 (по умолчанию) или посим- |
|||
|
вольным (без учета регистра) - 1. |
|||
|
Если строка1 меньше, чем строка2, |
|||
|
то возвращается 1, равна - 0, боль- |
|||
|
ше - -1 |
|
|
|
StrReverse (строка) |
Возвращает строку "наоборот". На- |
|||
|
пример, |
StrReverse("строка") = |
||
|
"акортс" |
|
|
|
Left (строка, длина) |
Выделяет из строки-аргумента |
|||
|
строку с указанным числом симво- |
|||
|
лов слева. |
|
|
|
Right(строка, длина ) |
Выделяет из строки-аргумента |
|||
|
строку с указанным числом симво- |
|||
|
лов справа |
|
|
|
Mid(строка, старт [, |
Выделяет из строки-аргумента |
|||
длина] ) |
строку, начиная с позиции старт, с |
|||
|
указанным числом символов (по |
|||
|
умолчанию - до конца) |
|
||
Replace(строка, строка- |
Заменяет вхождения параметра |
|||
Поиск, строкаЗамена ) |
строкаПоиск |
значением |
параметра |
|
|
строкаЗамена в строке |
|
||
|
|
|||
LTrim (строка) |
Возвращает копию строки-аргумен- |
|||
|
та, из которой удалены пробелы, |
|||
|
находившиеся в начале строки |
|||
RTrim (строка ) |
Возвращает копию строки-аргу- |
|||
|
мента, из которой удалены пробе- |
|||
99
Окончание табл. 6.6
|
лы, находившиеся в конце строки |
||
|
|
|
|
Trim (строка ) |
Возвращает |
копию |
строки- |
|
аргумента, из которой удалены |
||
|
пробелы, находившиеся как в нача- |
||
|
ле, так и в конце строки |
|
|
|
|
||
InStr([старт, ] строка1, |
Возвращает позицию первого вхо- |
||
строка2 [, сравнение]) |
ждения строки строка2 в строке |
||
|
строка1 (старт - позиция, с которой |
||
|
следует начинать поиск) |
|
|
LCase(строка) |
Преобразует |
символы |
строки- |
|
аргумента к нижнему регистру. На- |
||
|
пример, LCase("Hello") = |
"hello" |
|
UCase(строка) |
Преобразует |
символы |
строки- |
|
аргумента к верхнему регистру |
||
Split(строка |
Преобразует (расщепляет) строку к |
||
[,разделитель]) |
массиву подстрок. По умолчанию, |
||
|
разделитель – пробел |
|
|
Join(массивСтрок |
Преобразует (объединяет) массив- |
||
[,разделитель]) |
Строк к строке с разделителем |
||
6.5. Математические функции
VBA имеет общепринятый набор математических функций, который представлен в следующей таблице.
Таблица 6.7
Математические функции
Функция Значение
Abs (число) Возвращает абсолютное значение (модуль) аргумента
Atn (число) Возвращает арктангенс аргумента (в радианах)
Cos (число) Возвращает косинус аргумента. Число задается в радианах
100
|
Продолжение табл. 6.7 |
Ехр (число) |
Возвращает результат возведения экспонен- |
|
ты в степень аргумента |
Fix (число) |
Возвращает тот же аргумент, но без дробных |
|
разрядов |
Int (число) |
Возвращает целую часть аргумента |
Log (число) |
Возвращает натуральный логарифм аргумен- |
|
та |
Rnd (число) |
Возвращает случайное число |
Sgn (число) |
Возвращает-1, если число меньше 0; 0, если |
|
равно 0, и 1, если больше 0 |
Sin (число) |
Возвращает синус аргумента |
Sqr (число) |
Возвращает квадратный корень из аргумента |
Tan (число) |
Возвращает тангенс аргумента (в радианах) |
Несколько комментариев к таблице. Для тригонометрических функций аргументы задаются в радианах, т. е. для вычисления косинуса 90 градусов необходимо записать cos(Pi/2)2, Функции Int и Fix фактически выполняют округление числа, но они делают это по-разному. Если число отрицательное, то Int возвращает ближайшее целое число, меньшее чем аргумент, a Fix, наоборот, большее (это не распространяется на положительные числа). Функция Rnd - это генератор случайных чисел, но генерирует он их в зависимости от параметров, введенных пользователем. Так, если бы вы ввели число большее 0 или бы вообще его не ввели, то сгенерировалось бы новое случайное число; если аргумент будет равен 0, то результатом будет предыдущее число, а если оно отрицательное, то результатом будет одно и то же число, определяемое аргументом.
6.6. Процедуры и функции работы со временем и датами
Данные типа Date занимают 4 байта, столько же занимают данные типа Single (вещественное число одинарной точности). Начальная дата равна 30.12.1899. Таким образом, число 1 будет означать 31 декабря 1899 года, а число 36474.12345 рав-
101
но 10.11.99 2:57:46. Процедуры делятся на две группы: первые определяют даты, вторые - их обрабатывают.
К первой группе относятся следующие процедуры:
-Date - возвращает текущую системную дату;
-Time - возвращает текущее системное время;
-Now - возвращает текущие системные дату и время. Текущие дата и время определяются по внутренним ча-
сам компьютера, которые можно установить с помощью панели управления Windows. Можно переопределить значения системного времени, используя ключевые слова Date и Time.
Кстати, вы можете переопределить значения системного времени, используя ключевые слова Date и Time.
Например, если текущая дата 21.11.2002, тогда следующая процедура "отправит вас в будущее" на месяц вперед:
NewD = Date +31 Date = NewD
В результате выполнения вышеуказанного кода будут переустановлены внутренние часы компьютера, что повлияет не только на данную программу, но и на все приложения, выполняемые на данном компьютере.
Вторая группа функций представлена в табл. 6.8.
|
|
Таблица 6.8 |
Функции для работ с датами |
|
|
Функция |
Описание |
|
DateAdd(интервал, число, |
Предназначена для |
добавления |
дата) |
или вычитания из даты указан- |
|
|
ного числа указанных времен- |
|
|
ных интервала. Таблица времен- |
|
|
ных интервалов приведена ниже. |
|
DateDiff(интервал, дата1, |
Возвращает число |
указанных |
дата2 [, первыйДеньНеде- |
временных интервалов, являю- |
|
ли [, перваяНеделяГода]]) |
щееся разностью между датами |
|
|
дата2 и дата1. Например, |
|
|
DateDiff("Y","25.11.02", |
|
|
"31.12.02") = 36 |
|
102