Задание типа константы
Когда объявляется именованная константа или используется литеральная, VBA воспринимает эту константу тем типом, который наиболее согласуется с ее значением.
В VBA можно задавать тип константы (по аналогии с переменными). Но в отличие от переменных нельзя задавать типы Object и Array.
Например, Const Pi As Single = 3.14
Внутренняя константа - это именованная константа, которая была определена разработчиками VBA.
Excel содержит внутренние константы для использования с рабочими книгами электронных таблиц. Аналогично, Word содержит внутренние константы для работы с документами и шаблонами текстового редактора, а Access - для операций с базами данных.
Внутренние константы, определяемые VBA, начинаются с букв vb. Внутренние константы Excel - xl; Word - wd.
Для того, чтобы увидеть полный список имеющихся в наличии внутренних констант необходимо использовать Object Browser. Его можно вызвать клавишей F2 в окне редактора VBA.
Приведение и преобразование типов
Приведением называется автоматическое преобразование значения одного типа данных в эквивалентное значение другого типа в процессе выполнения операций с данными. Приведение выполняется, если операнды (данные, участвующие в операции) имеют разные типы. При этом результат операции будет иметь тот тип, к которому приводится один из операндов. Например, складываются два числа - целое (Integer) и вещественное (Double). В процессе этой операции целое число приводится к вещественному (Double), и результат будет иметь тип Double. Обратное преобразование (Double в Integer) может привести к потере данных.
Нередко возникают ситуации, когда данные одного типа надо преобразовать в данные другого. Ярче всего это проявляется тогда, когда нужно преобразовать число, представленное в виде строки и хранящееся в строковой переменной.
Для таких "превращений" существуют специальные функции преобразования типов.
Функция Val применяется для конверсии строковых переменных в числовые, а именно – переменных типа String в тип Double.
Val читает предлагаемую ей строку слева направо, игнорируя пробелы. Она считывает все числовые знаки до первого символьного знака и преобразует считанное в число. В качестве дробных символов функция понимает лишь точки.
Val ("1 2 3") возвратит число 123
Val ("1 2 и 3") возвратит число 12.
Иногда нужно провести обратное преобразование — превратить число в строку.
Функция Str конвертирует данные различных числовых типов в тип String.
Особенность функции заключается в том, что первый символ полученного строкового значения зарезервирован для знака числа. Если в строку конвертируется число отрицательное — первый символ полученной строки — знак -. Если конвертируется положительное число, первым символом полученной строки будет пробел, а дальше будут идти числовые символы.
Например, функция Str (12) возвратит строку " 12 ".
Существуют и другие функции, предназначенные для конверсии типов данных. Их названия состоят из сокращенного слова "Convert" и сокращенного же названия типа данных, в который они конвертируют входные значения. Например, это CBool, CByte, CCur, CDate, CDbl, CDec, CInt, CLng, CSng, CStr, CVar. Скажем, функция CInt конвертирует данные в формат Integer. Учитывая особенности этого типа данных, корректно могут быть сконвертированы лишь значения от -32768 до 32767. Причем, дробные числа округляются при конверсии до ближайшего четного числа — 0.5 округляется до 0, 1.5 — до 2. Если вам понадобятся подробности о каждой из этих функций — обратитесь к справочной системе VBA.
Таблица Функции преобразования типов
Функции |
Возвращает действие |
Возвращаемый тип |
Asc (S) |
Возвращает число кода символа, соответствующее первой букве строки S. Буква «А», например, имеет код символа 65 |
Integer |
CBool(N) |
Возвращает Вооlеаn-эквивалент численного выражения N |
Boolean |
Format (Е, S) |
Возвращает строку, содержащую значение, представленное выражением Е, в формате в соответствии с инструкциями, содержащимися в S |
String |
Str(N) |
Возвращает строку, эквивалентную численному выражению N |
String |
Val(S) |
Возвращает численное значение, соответствующее числу, представленному строкой S, которая должна содержать только цифры и одну десятичную точку, иначе VBA не может преобразовать ее в число. Если VBA не может преобразовать строку в S, то функция Val возвращает 0 |
Variant |
CByte(E) |
Возвращает численное значение типа Byte (от 0 до 255); Е - любое допустимое численное или строковое выражение, которое может быть преобразовано в число |
Byte |
CCur(E) |
Возвращает численное значение типа Currency; Е - любое допустимое численное или строковое выражение, которое может быть преобразовано в число |
Currency |
CDate(E) |
Возвращает значение типа Date. Е может быть любым допустимым выражением (строкой или числом), представляющим дату в диапазоне 1/1/100-12/31/9999 включительно |
Date |
CDbl(E) |
Возвращает численное значение типа Double; Е - любое допустимое численное или строковое выражение, которое может быть преобразовано в число |
Double |
Cint(E) |
Возвращает численное значение типа Integer; Е - любое допустимое численное или строковое выражение, которое может быть преобразовано в число |
Integer |
CLng(E) |
Возвращает численное значение типа Long; Е - любое допустимое численное или строковое выражение, которое может быть преобразовано в число |
Long |
CSng(E) |
Возвращает численное значение типа Single; Е - любое допустимое численное или строковое выражение, которое может быть преобразовано в число |
Single |
CStr(E) |
Возвращает значение типа String; Е - любое допустимое численное или строковое выражение |
String |
CVar(E) |
Возвращает значение типа Variant; Е - любое допустимое численное или строковое выражение |
Variant |
Chr(N) |
Возвращает строку из одного символа, соответствующего коду символа N, который должен быть числом между 0 и 255 включительно. Код символа 65, например, возвращает букву «А» |
Символ |
