VBA Excel. Типы данных

    Справочная таблица по встроенным типам данных VBA Excel. Функция TypeName, возвращающая тип данных переменной. Оператор Option Explicit в начале модуля.

    Встроенные типы данных

    Встроенные типы данных VBA Excel:

    Тип данных Байты* Диапазон значений
    Byte 1 Целые числа:
    от 0 до 255
    Boolean 2 True (Истина) или False (Ложь)
    Integer 2 Целые числа:
    от -32768 до 32767
    Long 4 Целые числа:
    от -2147483648 до 2147483647
    Single 4 Отрицательные числа:
    от -3,402823Е+38 до -1,401298Е-45
    Положительные числа:
    от 1,401298Е-45 до 3,402823Е+38
    Double 8 Отрицательные числа:
    от -1,79769313486232Е+308
    до -4,94065645841247Е-324
    Положительные числа:
    от 4,94065645841247Е-324
    до 1,79769313486232Е+308
    Currency 8 от -922337203685477,5808
    до 922337203685477,5807
    Date 8 с 1 января 100 года
    по 31 декабря 9999 года
    Object 4 Ссылка на объект
    String
    (переменной длины)
    10 + длина строки от 0 до ≈2 млрд символов
    String
    (фиксированной длины)
    длина строки от 1 до ≈65400 символов
    Variant
    (числа)
    16 В пределах диапазона типа
    данных Double
    Variant
    (символы)
    22 + длина строки от 0 до ≈2 млрд символов

    Дополнительно для VBA7:

    Тип данных Байты* Диапазон значений
    LongLong 8 Целые числа:
    от –9 223 372 036 854 775 808
    до 9 223 372 036 854 775 807
    Доступен только в 64-разрядных системах.
    LongPtr 4 или 8 В 32-разрядных системах соответствует типу Long:
    от -2147483648 до 2147483647,
    в 64-разрядных — типу LongLong:
    от –9 223 372 036 854 775 808
    до 9 223 372 036 854 775 807

    *Резервируется память в байтах на каждую переменную соответствующего типа.

    Тип данных Variant может принимать специальные значения: Empty, Error, Nothing и Null.

    Кроме встроенных типов данных VBA Excel позволяет использовать пользовательские типы, создаваемые с помощью оператора Type. Диапазон значений пользовательского типа данных определяется встроенными типами, из которых он состоит.

    Переменные с типами данных Byte, Boolean, Integer, Long, Single и Double можно объявлять с помощью суффиксов.

    Функция TypeName

    TypeName – это функция, возвращающая значение типа String с информацией о переменной.

    Чаще всего, функция TypeName возвращает наименование типа данных аргумента (значения), содержащегося в переменной. Кроме наименований встроенных типов данных, функция TypeName может возвращать следующие значения:

    Значение Описание
    Collection, Dictionary, Range, Worksheet и т.д. Тип известного объекта, ссылка на который содержится в объектной переменной
    Error Переменная содержит значение ошибки
    Empty Неинициализированное значение
    Null Отсутствие допустимых данных
    Unknown Объект, тип которого неизвестен
    Nothing Объектная переменная, которая не ссылается на объект

    Если переменная объявлена с числовым типом данных или String, функция TypeName возвратит наименование этого типа данных. Если переменная объявлена с типом данных Variant или Object, возвращаемое значение будет зависеть от содержимого переменной.

    Пример:

    Оператор Option Explicit

    VBA Excel допускает использование в коде как объявленных, так и необъявленных переменных. Необъявленным переменным присваивается тип данных Variant и они могут принимать все допустимые значения, свойственные этому типу.

    Если при написании кода допустить ошибку в имени ранее использовавшейся переменной, компилятор зарегистрирует ее как новую. Это вызовет ошибки в работе программы, причину которых (ошибку в имени переменной) трудно обнаружить при отладке.

    Чтобы избежать ошибок при работе с переменными используется оператор Option Explicit. Он указывает на то, что все переменные в модуле должны быть объявлены с помощью ключевого слова Dim или ReDim. В этом случае, если компилятор обнаружит строку с необъявленной переменной, то сгенерирует ошибку и выделит эту переменную.

    Размещается оператор Option Explicit в самом начале модуля перед всеми остальными операторами. Чтобы каждый раз не вставлять его вручную и, тем более, не забыть о нем, можно настроить редактор VBA Excel, чтобы он автоматически добавлял Option Explicit при создании нового модуля.

    Настройка автоматического добавления Option Explicit

    1. Откройте окно Options через вкладку меню Tools:

    Путь к окну Options

    2. Отметьте галочкой опцию Require Variable Declaration на вкладке Editor:

    Окно Options

    3. Теперь новый модуль открывается со строкой Option Explicit:

    Строка Option Explicit вставлена


    Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

    13 комментариев для “VBA Excel. Типы данных”

    1. Кстати, а можно ли определить размер переменной в байтах?
      Что-нибудь типа MsgBox (Size(i))

    2. Cтолбец «D» — текcтовая информация

      для поиска и сравнения хочу переменной «poisk» присвоить значение ячейки D3
      Машина ругается «Ошибка метода _Default объекта Range»
      Что она (машина ) из-под меня хочет ?

        1. спасибо!
          На ровном месте споткнулся!
          В переменной прописываю n_p а проверяю r ?!
          Надо пойти на свежий воздух проветриться

    3. Здравствуйте!
      Хочу обратить внимание достопочтенной публики, что не все дробные значения одинаково полезны.

      Есть несколько способов справиться с этим безобразием.
      Самый простой — это не использовать Single, если планируете работать с ячейками.
      Типы данных Double или Variant подобным, как будто бы, не грешат,
      с другой стороны, их размер (в байтах) больше, чем у Single.
      Можно также использовать округление ячеек до двух цифр после запятой

      Для самых же смелых духом, я предлагаю решение, где не нужно изменять тип переменной или вводить дополнительные:

    4. работаю с числами в текстовом формате

      машина выдает «0» в числовом формате (правое расположение в ячейке)

    5. Евгений, ответ правильный, но меня он не устраивает …
      похоже я криво изложил свою проблему
      [d2] — в данном случае несет визуально-контрольное назначение ( чтобы можно было ТОЛЬКО посмотреть/проверить и ВСЁ ! )
      Все действия (вырезать, правый/левый, сцепить …) это всё будет проводиться с переменной t1
      Именно у t1 должен быть текстовый формат
      т.е.

      В этом случае t2 должна быть «00000234»

    6. Опечатка:

    Добавить комментарий

    Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора.