Dim Variable
Альтернативой будет явное объявление типа данных переменной. Оператор
Dim sngMyOldSocks As Single объявляет sngMyOldSocks как переменную типа Single, что означает переменную, хранящую не слишком большое число с плавающей запятой, - что-то вроде чисел, использующихся для представления физических величин, с десятичной запятой и экспонентой, как, например, 6,02 x 10
VBA предлагает целый ряд других типов данных для переменных, включая исключительно удобные типы Date (Дата) и Currency (Денежный). Внимательно ознакомьтесь со всеми доступными типами данных, поскольку их правильное использование даст ключ к созданию правильно работающих программ. В табл. 7.1 приводятся основные факты, касающиеся типов данных, а дополнительные сведения и обсуждение приемов работы с конкретными типами данных вы найдете ниже, в разделе Дополнительные сведения о типах данных.
Таблица 7.1. Типы данных VBA
Тип данных
|
Содержимое соответствующей переменной
|
Диапазон допустимых значений
|
Boolean
|
Логическое Истина или Ложь
|
Истина (-1) или Ложь (0)
|
Byte
|
Достаточно малое целое число
|
От 0 до 255
|
Integer
|
He слишком большое целое число
|
От -32768 до 32767
|
Long
|
Большое целое число
|
От -2147483648 до 2147483647
|
Single
|
Значение одинарной точности с плавающей запятой
|
От -3.402823Е38 до -1.401298Е-45 для отрицательных значений и от 1,401298Е-45 до 3,402823Е38 для положительных
|
Double
|
Значение двойной точности с плавающей запятой
|
От-1,79769313486232Е308 до - 4,94065645841247Е-324 для отрицательных значений и от 4,94065645841247Е-324 до 1,79769313486232Е308 для положительных
|
Currency
|
Большое число, для которого выделено 19 позиций, включая фиксированные четыре позиции после запятой
|
От -922337203685477,5808 до 922337203685477,5807
|
Decimal
|
Еще большее число, всего 29 позиций, из них до 28 позиций включительно для значения дробной части числа
|
Допустимый диапазон зависит от числа знаков после запятой, например, ±79228162514264337593543950335 для чисел без дробной части или ±7,922816251426433759354 для чисел с 28 знаками после запятой
|
Date
|
Дата и время
|
От 1 января 100 г. До 31 декабря 9999 г.
|
Object
|
Объект VBA
|
Ссылка на любой объект
|
String
(переменной длины)
|
Последовательность переменной длины, состоящая из символов
|
Строковая переменная переменной длины может содержать от 0 до примерно двух миллиардов символов
|
String
(фиксированной длины)
|
Последовательность заданной длины, состоящая из символов
|
Строковая переменная фиксированной длины может содержать от 0 до примерно 65400 символов
|
Variant
|
Любое из допустимых данных
|
Зависит от типа данных, содержащихся в переменной, в соответствии с вышеприведенными описаниями
|
Пользовательский
(требует использования оператора Туре)
|
Группа переменных, используемых вместе как единое целое
|
Для каждой из переменных в группе, зависит от ее типа в соответствии с вышеприведенными описаниями
|
Использование конкретного типа данных по сравнению с типом Variant: за и против
Одни считают, что указание в объявлении переменной ее конкретного типа данных (т.е. типа, отличного от Variant ) - это хорошо, другие же считают, что это плохо. Объявление конкретного типа данных переменной помогает избежать одних ошибок, но обеспечивает массу возможностей для появления других. Такой подход способствует уменьшению и ускорению выполнения программ, но в большинстве реальных случаев эти усовершенствования, наверное, не будут слишком важны.
Вот некоторые обстоятельства, способствующие уменьшению числа ошибок. Если при объявлении переменной задается конкретный тип данных, VBA не позволит вам поместить а эту переменную данные других типов. Например, если переменная объявляется оператором
Dim dateAnniversary As Date
то VBA выведет на экран сообщение об ошибке, когда вы попытаетесь присвоить этой переменной текстовое значение, как здесь:
dateAnniversary = Поездка на Фиджи ' Ошибка
Сообщения об ошибках, наверное, будут раздражать, но все же это лучше, чем позволить программе работать с ошибочными данными.
Сообщение об ошибке не появилось бы, если dateAnniversary была объявлена как переменная типа Variant, т.е. как переменная, допускающая любой тип данных. Тип данных Variant можно объявить точно так же, как и любой другой, например:
Читать дальше