В программах на VBA очень часто приходится преобразовывать значения из одного типа данных в другой. Приведу несколько типичных ситуаций, когда этим приходится заниматься:
r преобразование из строкового значения в числовое при приеме значения от пользователя через InputBox ();
r преобразование значения даты/времени в строковое, когда нам нужно отобразить дату или время единообразно вне зависимости от региональных настроек на компьютерах пользователей;
r преобразование значения из строкового в дату/время для применения специальных функций даты/времени.
Чаще всего для конвертации типов данных используются функции, имя которых складывается из префикса ‘c’ (от слова Convert) и имени типа данных. Перечень этих функций следующий: CBооl(), CByte(), CCur(), CDate(), CDbl(), CDec(), CInt(), CLng(), CSng(), CStr(), CVar(), CVDate(), CVErr().
Просмотреть, что в итоге получилось, можно при помощи функции TypeName (), которая возвращает имя используемого типа данных, например:
nVarl = CInt(InputBox("Введите значение"))
MsgBox TypeName(nVarl)
В данном случае эта функция вернет "integer". *
Кроме того, существует еще несколько полезных для конвертации функций.
r Str () — позволяет перевести числовое значение в строковое. Делает почти то же самое, что и CStr (), но при этом вставляет пробел перед положительными числами.
r Val () — "вытаскивает" из смеси цифр и букв только числовое значение. При этом функция читает данные слева направо и останавливается на первом нечисловом значении (допускается единственное нечисловое значение — точка, которая будет отделять целую часть от дробной). Очень удобно, когда у нас вперемежку с числовыми данными прописываются единицы измерения или валюта.
r IsNumeric() и IsDate() — проверяют значения на соответствие, чтобы не возникло ошибок при конвертации. Для проверки на соответствие специальным значениям можно использовать функции IsArray(), IsEmpty(), IsErrort(), IsMissingt(), IsNull() и IsObject(). Все эти функции возвращают True или False в зависимости от результатов проверки переданного им значения.
r Hex () и Oct () — преобразовывают десятичные данные в строковое представление шестнадцатеричных и восьмеричных значений.