Функция TypeName
Возвращает данные String, которые предоставляют информацию о переменной.
Синтаксис
TypeName(varname)
Необходимый аргумент varname — это вариант, содержащий любую переменную, за исключением переменной определенного пользователя типа.
Примечания
Строка, возвращаемая функцией TypeName, может быть одного из следующих типов:
| Возвращаемая строка | Переменная |
|---|---|
| тип объекта | Объект, тип которого — objecttype |
| Byte | Значение типа Byte |
| Integer | Integer |
| Long | Целое значение типа Long |
| Single | Число с плавающей запятой (точкой) одиночной точности |
| Double | Число с плавающей запятой (точкой) двойной точности |
| Currency | Значение типа Currency |
| Decimal | Значение типа Decimal |
| Date | Значение типа Date |
| String | String |
| Boolean | Значение типа Boolean |
| Error | Значение ошибки |
| Empty | Uninitialized |
| Null | Отсутствие допустимых данных |
| Object | Объект |
| Unknown | Объект, тип которого не известен |
| Ничего | Объектная переменная, которая не ссылается на объект |
Если аргумент varname — массив, возвращаемая строка может быть любой из возможных возвращаемых строк (или Variant) с добавленными пустыми круглыми скобками. Например, если varname — это массив integers, TypeName «Integer() возвращается «.
Пример
В этом примере функция TypeName используется для возврата информации о переменной.
См. также
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Определение типа данных в ячейке или переменной
В языке VBA есть универсальные типы данных, т.е. способные хранить как число, так и строку, дату и любой другой тип информации. Например, ячейка в таблице может содержать что угодно и изначально, программа не знает какой в ней тип данных хранится. Кроме того, в самой программе может использоваться тип данных Variant, который так же может содержать любое значение любого типа.
Чтобы определить какой тип данных в ячейке или в переменной типа Variant, можно воспользоваться несколькими способами.
Способ 1. Использовать функцию TypeName для определения типа данных
Эта функция возвращает строку с названием типа данных на английском. В качестве аргумента принимает переменную, значение ячейки.
Обратите внимание: Функция определяет только стандартные типы данных и не может определить пользовательский тип (определенный с помощью Type).
Возможные возвращаемые функцией значения:
| Byte | Число типа Byte |
| Integer | Целое число |
| Long | Длинное целое число |
| Single | Число одиночной точности с плавающей запятой |
| Double | Число двойной точности с плавающей запятой |
| Currency | Валюта |
| Decimal | Число с плавающей запятой |
| Date | Дата |
| String | Строка |
| Boolean | Логическое |
| Error | Ошибка |
| Empty | Не проинициализировано (т.е. переменная не была объявлена) |
| Null | Неверные данные (в переменной нет корректных данных) |
| Object | Объект (класс) |
| Unknown | Тип данных не известен |
| Nothing | Объект, никуда не ссылающийся |
Приведу несколько примеров по использованию TypeName.
Пример 1. Определение типа переменной.
Обратите внимание: если вы используете результат TypeName в условии, т.е. проверяете, соответствует ли тип данных определенному, например, Integer, то регистр символов возвращаемого типа имеет значение. Т.е. нужно писать Integer с заглавной буквы, либо использовать приведение всех символов к одному регистру.
Пример 2. Использование TypeName в условии.
Пример 3. Определение типа данных в ячейке.
Если функции была передана переменная массив, она вернет тип данных в массиве с добавлением скобок.
Пример 4. Определение типа массива.
Способ 2. Проверка на возможность преобразования строки к нужному типу.
Бывает ситуация, когда значение, например, число или дата, содержится в строке. В этом случае TypeName вернет String, а не Integer или Date. Чтобы узнать, что содержится в строке, можно воспользоваться одной из функций IsNumeric, IsDate, IsObject, IsArray, IsNull, IsError.
| IsNumeric | Проверяет может ли выражение быть преобразовано в число |
| IsDate | Проверяет может ли выражение быть преобразовано в дату |
| IsObject | Проверяет, является ли переменная объектом |
| IsArray | Проверяет, является ли переменная массивом |
| IsNull | Проверка на пустое значение |
| IsError | Проверка выражения на ошибку |
Пример 4. Определение может ли переменная быть преобразована в число.
К сожалению, как видим из примера, нет возможности проверить, содержится ли в строке число с плавающей точкой.
Пример 5. Определение содержит ли переменная дату (может быть преобразована в дату).
Проверка, содержится ли число или дата в ячейке листа делается аналогично, как и с переменными.
Помимо этих способов можно конечно еще придумать и другие, например, проверку строки с данными регулярным выражением или пройти по каждому символу в цикле и проверить цифра это или нет и тому подобное. Но на мой взгляд, описанных мной способов вполне достаточно для решения повседневных задач.
TypeName function
Returns a String that provides information about a variable.
Syntax
TypeName(varname)
The required varname argument is a Variant containing any variable except a variable of a user-defined type.
Remarks
The string returned by TypeName can be any one of the following:
| String returned | Variable |
|---|---|
| object type | An object whose type is objecttype |
| Byte | Byte value |
| Integer | Integer |
| Long | Long integer |
| Single | Single-precision floating-point number |
| Double | Double-precision floating-point number |
| Currency | Currency value |
| Decimal | Decimal value |
| Date | Date value |
| String | String |
| Boolean | Boolean value |
| Error | An error value |
| Empty | Uninitialized |
| Null | No valid data |
| Object | An object |
| Unknown | An object whose type is unknown |
| Nothing | Object variable that doesn’t refer to an object |
If varname is an array, the returned string can be any one of the possible returned strings (or Variant) with empty parentheses appended. For example, if varname is an array of integers, TypeName returns «Integer() «.
Example
This example uses the TypeName function to return information about a variable.
See also
Support and feedback
Have questions or feedback about Office VBA or this documentation? Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.
VBA Excel. Свойство Selection объекта Application
Свойство Selection объекта Application, которое применяется в VBA для возвращения выбранного объекта на активном листе в активном окне приложения Excel.
Свойство Application.Selection
Если выделить на рабочем листе диапазон «B2:E6», то обратиться к нему из кода VBA Excel можно через свойство Selection объекта Application, например, присвоить выбранный диапазон объектной переменной:
При использовании свойства Selection в коде VBA Excel указывать объект Application не обязательно. Результат работы кода:
На рабочем листе Excel может быть выбран не только диапазон ячеек, но и другие объекты: рисунок, надпись, диаграмма, элемент управления формы и другие.
Применение функции TypeName
Для программного выбора объекта в VBA Excel используется метод Select, а для определения типа ранее выбранного объекта — функция TypeName.
Выберем диапазон «D5:K9» методом Select и определим тип данных выбранного объекта с помощью функции TypeName:
В качестве переменной для функции TypeName здесь используется свойство Selection. Результат работы кода:
Следующий пример кода VBA Excel очень хорошо иллюстрирует определение типа выбранного объекта с помощью функции TypeName. Он взят с сайта разработчиков, только в блок Select Case добавлены еще два элемента Case:
VBA Excel. Типы данных
Справочная таблица по встроенным типам данных VBA Excel. Функция TypeName, возвращающая тип данных переменной. Оператор Option Explicit в начале модуля.
Встроенные типы данных
Встроенные типы данных VBA Excel:
*Резервируется память в байтах на каждую переменную соответствующего типа.
Тип данных Variant может принимать специальные значения: Empty, Error, Nothing и Null.
Кроме встроенных типов данных VBA Excel позволяет использовать пользовательские типы, создаваемые с помощью оператора Type. Диапазон значений пользовательского типа данных определяется встроенными типами, из которых он состоит.
Переменные с типами данных Byte, Boolean, Integer, Long, Single и Double можно объявлять с помощью суффиксов.
Функция TypeName
Чаще всего, функция TypeName возвращает наименование типа данных аргумента (значения), содержащегося в переменной. Кроме наименований встроенных типов данных, функция TypeName может возвращать следующие значения:
| Значение | Описание |
|---|---|
| Collection, Dictionary, Range, Worksheet и т.д. | Тип известного объекта, ссылка на который содержится в объектной переменной |
| Error | Переменная содержит значение ошибки |
| Empty | Неинициализированное значение |
| Null | Отсутствие допустимых данных |
| Unknown | Объект, тип которого неизвестен |
| Nothing | Объектная переменная, которая не ссылается на объект |
Если переменная объявлена с числовым типом данных или String, функция TypeName возвратит наименование этого типа данных. Если переменная объявлена с типом данных Variant или Object, возвращаемое значение будет зависеть от содержимого переменной.

