Замечу, однако, что, кроме превращения самой операции конвертирования в явную, эти функции не делают ничего такого, что не может предложить VBA при автоматическом конвертировании. (Об особенностях функции СDec см. в главе 9.)
Функции Fix и intотбрасывают дробную часть любого заданного им числа, возвращая целое число. Но, в отличие от функций CInt и CLng, они не выполняют привычного округления - например, int(4 . 98 9) возвращает 4, а не 5.
Результаты этих двух функций отличаются только при обработке отрицательных чисел.
Тогда intвозвращает ближайшее к значению аргумента меньшее целое число, a Fix просто отбрасывает дробную часть аргумента.
Функции Hex и Oct преобразуют стандартные десятичные целые числа в строки, содержащие соответственно их шестнадцатеричные и восьмеричные эквиваленты.
Возможность явного конвертирования в обратном направлении в VBA не предусмотрена, но зато вы можете напечатать буквальные шестнадцатеричные или восьмеричные значения и позволить редактору Visual Basic превратить их в десятичные автоматически. При этом любой шестнадцатеричный или восьмеричный литерал должен предваряться специальным кодом: шестнадцатеричный – кодом &Н, а восьмеричный - кодом &О (это буква О, а не цифра 0). Например, в результате выполнения оператора intBas es = 10+&О12 + &НА значением переменной intBases будет число 30, как и должно быть (это очевидно).
Некоторые функции VBA конвертируют числа в строки. К таким функциям относятся следующие.
* CStr. Превращает данные любых типов (кроме типа Object ), включая числовые, в соответствующую им строку. Вывод форматируется в соответствии с установками заданными в панели управления Язык и стандарты Windows. Например, во Франции CStr ( 200.02) на выходе выдаст строку "200, 02". Здесь следует заметить, что хотя результирующая строка и соответствует региональным установкам, подаваемые на вход числовые данные должны быть представлены в формате, соответствующем английскому языку США.
* Str. Конвертирует число в строку, но всегда форматирует строку в соответствии со стандартом английского языка США с точкой в качестве десятичного разделителя.
* Функции конвертирования в числовые типы данных. Конвертируют строки в соответствующие числовые значения, но только тогда, когда все символы в строке распознаются как допустимые для чисел. В данном случае тоже все зависит от установок в панели управления. Например, в России CDbl ("200, 02р. ") в результате дает 200, 02; в США тот же оператор порождает ошибку, но CDbl ( "$200 . 02" ) прекрасно работает.
* Val. Конвертирует числа в строках в числовые значения, останавливаясь там, где встречается первый символ, недопустимый для чисел. Независимо от установок панели управления, распознает только цифры и десятичную точку (а не запятую, например). Однако игнорирует пробелы, символы табуляции и переходы на новую строку.
Так, выражение Val ("28 190.43 12 by 14 ") в результате даст 28190,4312.
Chr. Конвертирует числовой ANSI-код в соответствующий символ. Используйте эту функцию, когда в строку нужно поместить символ, который нельзя напечатать.
Asc. Примерно соответствует обратной к функции Chr - возвращает числовой код первого символа в строке.
В VBA имеется довольно богатая коллекция операторов и функций для форматирования строк и извлечения тех их частей, которые вы сочтете особенно привлекательными. В табл. 11.3 я представил все относящиеся к строкам команды, которые мне удалось обнаружить.
Таблица 11.3. Операторы и функции для обработки строк
Не забывайте, что буквальные строковые значения (в отличие от переменных, содержащих строковые значения) должны заключаться в кавычки.
Оператор или функция
|
Тип
|
Выполняемые действия (для операторов) или возвращаемые значения (для функций)
|
Asc (строка)
|
Функция
|
Числовой код первого символа в строке
|
Chr (код_символа)
|
функция
|
Символ, соответствующий значению параметра код_символа
|
Filter ( массив_источник, эталон, включает, метод сравнения)
|
Функция (только в VBA6)
|
Массив, состоящий только из тех строк из массива источника, которые содержат эталон. Аргумент массив_истчник должен быть массивом строковых значений. Если необязательный аргумент включает равен False, то функция возвратит только строки, которые не включают эталон
|
Format (строка)
|
Функция
|
См. выше раздел "Форматирование данных"
|
Hex (число)
|
Читать дальше