В данной статье мы познакомимся с типами данных VBA языка. При объявлении переменной можно и не указывать VBA типы данных, в таком случае ей автоматически будет присвоен тип Variant, в этом случае размер данных будет зависеть от хранимых в переменной значений, например, строковые данные, целые, вещественные числа и так далее.
Хотя язык VBA и VBScript происходят из одного семейства, для VBA мы можем явно указывать тип данных с помощью ключевого слова As, а в VBScript такой возможности нет. Так как поддерживаемые VBA типы данных идентичны как для Visual Basic for Applications так и для VBScript, то я решил не повторятся тут с их описанием, просто ознакомьтесь со статьей типы данных VBScript.
VBA позволяет представлять числовые значения в экспоненциальной форме, в некоторых случаях это экономит код. После символа E указывается степень десятичных знаков, например:
- -5.43E2 – тут мы записали число -543 в экспоненциальной форме.
- 3.4Е6 – число 3 400 000
- 5Е9 – число 5 000 000 000
Хорошо, теперь давайте рассмотрим на примерах применение типов данных.
VBA тип данных Date
Данный подтип используется для хранения даты и времени, можно использовать как специальный формат, например:
- #30/12/1986# — указываем заданную дату
- #12/30/1996 12:24:00 PM# — указываем дату и время
Или же просто прописать целое число, в этом случаем произойдет автоматическое определение даты. Редактор Visual Basic автоматически может изменять или дополнять вводимые данные, так, если мы указали время (часы и минуты) без секунд, то, произойдет автоматическое добавление секунд.
Создайте новую форму с тремя метками (объект Label) и одной кнопкой (объект CommandButton), в редакторе кода пропишите:
Sub Get_Date() Dim dDate_1 As Date, dDate_2 As Date, dDate_3 As Date dDate_1 = 12345 dDate_2 = #12/30/1986 12:22:00 PM# dDate_3 = #10/5/1999# Label1.Caption = dDate_1 Label2.Caption = dDate_2 Label3.Caption = dDate_3 End Sub Private Sub CommandButton1_Click() Call Get_Date End Sub |
Целые типы Byte, Integer и Long
Тут все предельно просто, Byte хранит целые значения от 0 до 255, Integer — от -32 768 до 32 767, а Long — от -2 147 483 648 до 2 147 483 647. Обратите внимание, что типы являются вложенными, то есть, Long охватывает Byte и Integer, Integer охватывает тип Long. Дело не только в диапазоне допустимых значений, но и в памяти, теоретически, данные типа Byte будут занимать 1 байт, Integer – 2 байта и Long – 4 байта памяти, но все зависит от платформы. Да и зацикливаться на этом не стоит, так как объем ОЗУ сейчас огромный, а мега программу вы и так не создадите, используя макросы.
Числа с плавающей точкой – Single и Double
Числа с плавающей точкой являются вещественными и могут содержать любое количество цифр до или после запятой.
Числа с фиксированной точкой – Currency
Это тоже вещественные значения, но, число цифр после запятой является фиксированным и составляет 4 знака.
Текстовые строки – String
В языке VBA текстовые строки заключаются в двойные кавычки. Обратите внимание, что тут нет разделения на “строка” – набор символов или “символ” – один символ. Для строк характерна возможность конкатенации (объединения) с помощью оператора &.
Логический тип Boolean
Тип данных VBA Boolean позволяет хранить логическое значение true или false. Стоит помнить, что при попытке отобразить логическое значение, хранящееся в переменной, оно автоматически преобразуется в строку и мы увидим true или false.
Variant
Variant – это универсальный тип, он автоматически назначается переменной, для которой не указан подтип данных, Variant как бы включает в себя все остальные подтипы. Фактически, Variant автоматически приводит присваиваемое значение к нужному типу, но использует больше всего памяти.
В большинстве случаев необходимости зацикливаться на типах данных нет, они являются в большей степени условностью, чем правилом, хотя…. в программировании все должно быть строго и по пунктам.
Object
Данный vba тип данных служит для создания ссылки на объект. С ним придется часто сталкиваться при работе с объектной моделью Microsoft Office, так как там содержится множество классов.
Помимо встроенных VBA типов данных, можно формировать и собственные, для этого служит ключевое слово Type, данный вопрос мы рассмотрим подробно в отдельной статье.
Что бы присвоить переменной 16-ричное значение, то перед ним нужно прописать &H, например, &HFF00. Как правило, 16-ричные значения используются, когда нужно задать код цвета.
Опечатка : Long охватывает Byte и Integer, Integer охватывает тип Long (должно быть Byte)