Не все типы данных совместимы друг с другом, и нельзя использовать несовместимые типы данных в одном и том же выражении. Например, нельзя произвести арифметическое сложение над числом и строкой. При обработке выражения, содержащего различные типы данных, VBA сначала пытается устранить любое различие типов, преобразуя значения в выражении в совместимые типы данных. Если устранить какие-либо различия преобразованием типов не удается, отображается ошибка времени исполнения и процедура прекращает выполняться.
VBA предоставляет различные функции для преобразования одного типа данных в другой (о них будет рассказано позже).
VBA использует различные правила для автоматического преобразования данных в совместимые типы. Как правило, большинство выражений, использующих разные типы данных, вызывают ошибку несовпадения типов только тогда, когда оба операнда в выражении имеют определенные и разные типы. Выражения не вызывают ошибку несовпадения типов, когда один из операндов является переменной типа Variant. VBA легче выполняет автоматические преобразования типов с данными типа Variant.
Преобразования численных типов
VBA преобразует численные типы данных в выражении в тип наибольшей точности, который затем дает результату выражения. Например, операндами выражения являются числа 10(Integer) и 20.89 (Single) - результат выражения будет иметь тип Single.
Но, если переменной типа Integer попытаться присвоить численное выражение типа Single, то VBA произведет округление до необходимой точности.
Преобразование строк и чисел
При преобразовании числа в строку VBA создает строку, содержащую все цифры этого числа и десятичный знак (если таковой имеется). Например, число 123.849 будет преобразовано в строку "123.849".
Если число очень большое или очень маленькое - VBA создаст строку в экспоненциальном виде. Например: 123000000 преобразуется в "123Е6".
Обратное преобразование возможно, если только строка содержит символьное представление числа в десятичном формате или экспоненциальном, при этом в качестве разделителя дробной части используется точка (но не запятая).