Вбудовані функції перетворення і перевірки типів даних VBA, функції CBool (), CByte (), CCur (), CDate (), CDbl (), CDec (), CInt (), CLng (), CSng (), CStr (), CVar (), CVDate (), CVErr (), Str (), Val (), IsNumeric (), IsDate (), IsEmpty (), IsError (), IsMissing (), IsNull (), IsObject (), IsArray ( ), Hex (), Oct ()
У програмах на VBA дуже часто доводиться перетворювати значення з одного типу даних в інший. Кілька типових ситуацій, коли цим доводиться займатися:
- перетворення з строкового значення в числове при прийомі значення від користувача через InputBox ();
- перетворення значення дати / часу в строкове, коли нам потрібно відобразити дату або час одноманітно незалежно від регіональних налаштувань на комп'ютерах користувачів;
- перетворення значення з строкового в дату / час для застосування спеціальних функцій дати / часу.
nVar1 = CInt (InputBox ( "Введіть значення"))
Крім того, ще кілька корисних для конвертації функцій:
- Str () - дозволяє перевести числове значення в строкове. Робить майже те ж саме, що і CStr (). але при цьому вставляє пропуск попереду для позитивних чисел.
- Val () - "витягує" з суміші цифр і букв тільки числове значення. При цьому ця функція читає дані зліва направо і зупиняється на першому нечислове значенні (допускається єдине нечислове значення - точка, яка буде відокремлювати цілу частину від дробової). Дуже зручно, коли у нас упереміж з числовими даними прописуються одиниці виміру або валюта.
Щоб не виникло помилок при конвертації, можна спочатку перевіряти значення на можливість конвертації за допомогою функцій IsNumeric () і IsDate (). Для перевірки на відповідність спеціальним значенням можна використовувати функції IsArray (). IsEmpty (). IsError (). IsMissing (). IsNull () і IsObject (). Всі ці функції повертають True або False залежно від результатів перевірки переданого їм значення.
Для того, щоб перетворити десяткові дані в строкове представлення шістнадцятирічних і вісімкових значень, використовуються функції Hex () і Oct (). Для зворотного перетворення спеціальних функцій не передбачено, але ви можете вказати компілятору VBA, що ці числа записані в шістнадцятковому або вісімковому форматі, записавши їх, наприклад, як O12 і HA.