Vba excel изменить тип переменной

Функции преобразования типов данных в VBA Excel. Наименования функций, синтаксис, типы возвращаемых данных, диапазоны допустимых значений выражения-аргумента.

Синтаксис функций преобразования

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

Если аргумент, переданный в функцию, не входит в диапазон типа, в который преобразуются данные, происходит ошибка.

Функции преобразования типов

Наименования функций преобразования типов, типы возвращаемых данных, диапазоны допустимых значений для аргумента:

Функция Тип данных Диапазон значений аргумента
CBool Boolean Любое допустимое строковое или числовое выражение.
CByte Byte От 0 до 255.
CCur Currency От -922 337 203 685 477,5808 до 922 337 203 685 477,5807.
CDate Date Любое допустимое выражение даты.
CDbl Double От -1,79769313486231E308 до -4,94065645841247E-324 для отрицательных значений; от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений.
CDec Decimal 79 228 162 514 264 337 593 543 950 335 для чисел без десятичных знаков. Для чисел с 28 десятичными знаками диапазон составляет 7,9228162514264337593543950335. Наименьшим возможным числом, отличным от нуля, является число 0,0000000000000000000000000001.
CInt Integer От -32 768 до 32 767, дробная часть округляется.
CLng Long От -2 147 483 648 до 2 147 483 647, дробная часть округляется.
CSng Single От -3,402823E38 до -1,401298E-45 для отрицательных значений; от 1,401298E-45 до 3,402823E38 для положительных значений.
CStr String Результат, возвращаемый функцией CStr, зависит от аргумента Выражение.
CVar Variant Диапазон совпадает с типом Double  для числовых значений и с типом  String  для нечисловых значений.

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

Функция Тип данных Диапазон значений аргумента
CLngLng LongLong От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807, дробная часть округляется. Действительно только для 64-разрядных платформ.
CLngPtr LongPtr От -2 147 483 648 до 2 147 483 647 для 32-разрядных платформ, от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 для 64-разрядных платформ, дробная часть округляется в обоих типах систем.

Примеры преобразования типов

Функция CBool

Функция CBool используется для преобразования выражений в тип данных Boolean.

Dim a

a = CBool(10) ‘Результат: True

a = CBool(0) ‘Результат: False

a = CBool(«True») ‘Результат: True

a = CBool(«Test») ‘Результат: Error

Dim a, b, c

a = «Test1»

b = «Test2»

c = CBool(a = b) ‘Результат: False

c = CBool(a <> b) ‘Результат: True

Функция CByte

Функция CByte используется для преобразования выражений в тип данных Byte.

Dim a, b, c

a = 654

b = 3.36

c = a / b ‘Результат: 194,642857142857

c = CByte(c) ‘Результат: 195

c = a * b ‘Результат: 2197,44

c = CByte(c) ‘Результат: Error

Функция CCur

Функция CCur используется для преобразования выражений в тип данных Currency.

Dim a, b, c

a = 254.6598254

b = 569.2156843

c = a + b ‘Результат: 823,8755097

c = CCur(a + b) ‘Результат: 823,8755

Функция CDate

Функция CDate используется для преобразования выражений в тип данных Date. Она распознает форматы даты в соответствии с национальной настройкой системы.

Dim a As String, b As Date, c As Double

a = «28.01.2021»

b = CDate(a) ‘Результат: #28.01.2021#

c = CDbl(b) ‘Результат: 44224

Dim a

a = CDate(44298.63895) ‘Результат: #12.04.2021 15:20:05#

a = CDate(44298) ‘Результат: #12.04.2021#

a = CDate(0.63895) ‘Результат: #15:20:05#

Функция CDbl

Функция CDbl используется для преобразования выражений в тип данных Double.

Dim a As String, b As String, c As Double

a = «45,3695423»

b = «548955,756»

c = CDbl(a) + CDbl(b) ‘Результат: 549001,1255423

Примечание
Eсли основной язык системы – русский, при записи в редакторе VBA Excel дробного числа в виде текста, ставим в качестве разделителя десятичных разрядов – запятую. Проверьте разделитель по умолчанию для своей национальной системы:
MsgBox Application.DecimalSeparator

Функция CDec

Функция CDec используется для преобразования выражений в тип данных Decimal.

Dim a As String, b As Double, c

a = «5,9228162514264337593543950335»

b = 5.92281625142643

c = CDec(a) CDec(b) ‘Результат: 0,0000000000000037593543950335

Dim a As Double, b As String, c

a = 4.2643E14

b = CStr(a) ‘Результат: «4,2643E-14»

c = CDec(a) ‘Результат: 0,000000000000042643

Функция CInt

Функция CInt используется для преобразования выражений в тип данных Integer.

Dim a As String, b As Integer

a = «2355,9228»

b = CInt(a) ‘Результат: 2356

Функция CLng

Функция CLng используется для преобразования выражений в тип данных Long.

Dim a As Date, b As Long

a = CDate(44298.63895) ‘Результат: #12.04.2021 15:20:05#

b = CLng(a) ‘Результат: 44299

a = CDate(b) ‘Результат: #13.04.2021#

Функция CSng

Функция CSng используется для преобразования выражений в тип данных Single.

Dim a As String, b As Single

a = «3,2365625106»

b = CSng(a) ‘Результат: 3,236562

Функция CStr

Функция CStr используется для преобразования выражений в тип данных String.

Dim a As Single, b As String

a = 5106.23

b = CStr(a) ‘Результат: «5106,23»

Функция CVar

Функция CVar используется для преобразования выражений в тип данных Variant.

Dim a As Double, b As String, c

a = 549258.232546

b = «Новое сообщение»

c = CVar(a) ‘Результат: 549258,232546 (Variant/Double)

c = CVar(b) ‘Результат: «Новое сообщение» (Variant/String)

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


Содержание

  1. Функции преобразования типов
  2. Синтаксис
  3. Возвращаемые типы
  4. Примечания
  5. Пример функции CBool
  6. Пример функции CByte
  7. Пример функции CCur
  8. Пример функции CDate
  9. Пример функции CDbl
  10. Пример функции CDec
  11. Пример функции CInt
  12. Пример функции CLng
  13. Пример функции CSng
  14. Пример функции CStr
  15. Пример функции CVar
  16. См. также
  17. Поддержка и обратная связь
  18. VBA Excel. Функции преобразования типов
  19. Синтаксис функций преобразования
  20. Функции преобразования типов
  21. Примеры преобразования типов
  22. Функция CBool
  23. Vba excel изменить тип переменной

Функции преобразования типов

Каждая функция приводит выражение к нужному типу данных.

Синтаксис

  • CBool(выражение)
  • CByte(выражение)
  • CCur(выражение)
  • CDate(выражение)
  • CDbl(выражение)
  • CDec(выражение)
  • CInt(выражение)
  • CLng(выражение)
  • CLngLng(выражение) (действительно только для 64-разрядных платформ).
  • CLngPtr(выражение)
  • CSng(выражение)
  • CStr(выражение)
  • CVar(выражение)

Обязательный аргумент выражение — это любое строковое или числовое выражение.

Возвращаемые типы

Тип возвращаемого значения определяется по имени функции в соответствии со следующей таблицей:

Функция Тип возвращаемых данных Диапазон выражения-аргумента
CBool Boolean Любое допустимое строковое или числовое выражение.
CByte Byte От 0 до 255.
CCur Currency От -922 337 203 685 477,5808 до 922 337 203 685 477,5807.
CDate Date Любое допустимое выражение даты.
CDbl Double От -1,79769313486231E308 до -4,94065645841247E-324 для отрицательных значений; от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений.
CDec Decimal 79 228 162 514 264 337 593 543 950 335 для чисел без десятичных знаков. Для чисел с 28 десятичными знаками диапазон составляет 7,9228162514264337593543950335. Наименьшим возможным числом, отличным от нуля, является число 0,0000000000000000000000000001.
CInt Integer От -32 768 до 32 767, дробная часть округляется.
CLng Long От -2 147 483 648 до 2 147 483 647, дробная часть округляется.
CLngLng LongLong От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807; дробная часть округляется. (Действительно только для 64-разрядных платформ).
CLngPtr LongPtr От -2 147 483 648 до 2 147 483 647 для 32-разрядных систем; от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 для 64-разрядных систем; дробная часть округляется в обоих типах систем.
CSng Single От -3,402823E38 до -1,401298E-45 для отрицательных значений; от 1,401298E-45 до 3,402823E38 для положительных значений.
CStr String Результат, возвращаемый функцией CStr, зависит от аргумента выражение.
CVar Variant Диапазон совпадает с типом Double для числовых значений и с типом String для нечисловых значений.

Примечания

Если выражение, переданное в функцию, не входит в диапазон типа, в который преобразуются данные, происходит ошибка.

Для явного присвоения значений типа LongLong (включая тип LongPtr на 64-разрядных платформах) целочисленным типам данных меньшего размера должны использоваться функции преобразования. Неявные преобразования типа LongLong в меньшие целочисленные типы не допускаются.

Как правило, функции преобразования типов используются в тексте программ для того, чтобы указать, что результатом той или иной операции должны стать данные определенного типа, а не типа, заданного по умолчанию. Например, с помощью функции CCur можно принудительно перейти к вычислениям в денежном формате в тех случаях, в которых обычно используются действия с числами с обычной точностью, двойной точностью или с целыми числами.

Функции преобразования типа данных следует использовать вместо функции Val для преобразования типов данных в приложениях, поддерживающих различные региональные стандарты. Например, при использовании функции CCur десятичные разделители, разделители групп разрядов и параметры денежных единиц распознаются в соответствии с языковыми и региональными параметрами компьютера.

Если дробная часть целого числа строго равна 0,5, функции CInt и CLng всегда округляют результат до ближайшего четного числа. Например, 0,5 округляется до 0, а 1,5 — до 2. Функции CInt и CLng отличаются от функций Fix и Int, которые отбрасывают дробную часть числа, а не округляют ее. Кроме того, функции Fix и Int всегда возвращают значение того же типа, что и переданное им выражение.

Для определения возможности преобразования date в дату или время используется функция IsDate. Функция CDate распознает литералы даты и времени, а также некоторые числа, которые находятся в диапазоне допустимых дат. При преобразовании числа в дату преобразуется целая часть числа. Дробная часть преобразуется во время суток, начиная с полуночи.

Функция CDate распознает форматы даты в соответствии с национальной настройкой системы. Если формат передаваемого аргумента не соответствует распознаваемым настройкам даты, функция не сможет определить правильный порядок дней, месяцев и лет. Кроме того, длинный формат даты не распознается, если в нем содержится строка дня недели.

Функция CVDate предназначена для обеспечения совместимости с предыдущими версиями Visual Basic. Синтаксис функции CVDate не отличается от синтаксиса функции CDate; однако функция CVDate возвращает тип Variant, подтипом которого является тип Date, а не собственно тип Date. Поскольку теперь реализован встроенный тип Date, необходимость в функции CVDate отпадает. Такой же результат можно получить, если преобразовать выражение в тип Date и присвоить его типу Variant. Этот способ позволяет преобразовать все прочие встроенные типы в эквивалентные им подтипы Variant.

Функция CDec не возвращает отдельный тип данных. Вместо этого она всегда возвращает результат типа Variant, значение которого преобразовано в подтип Decimal.

Пример функции CBool

В этом примере функция CBool используется для преобразования выражения в тип Boolean. Если выражение разрешается в ненулевое значение, функция CBool возвращает значение True, в противном случае она возвращает значение False.

Пример функции CByte

В этом примере функция CByte используется для преобразования выражения в тип Byte.

Пример функции CCur

В этом примере функция CCur используется для преобразования выражения в тип Currency.

Пример функции CDate

В этом примере функция CDate используется для преобразования выражения в тип Date. Как правило, не рекомендуется определять дату и время в виде строк (как показано в этом примере). Вместо этого рекомендуется использовать литералы даты и времени, такие как #2/12/1969# и #4:45:23 PM# .

Пример функции CDbl

В этом примере функция CDbl используется для преобразования выражения в тип Double.

Пример функции CDec

В этом примере функция CDec используется для преобразования выражения в тип Decimal.

Пример функции CInt

В этом примере функция CInt используется для преобразования выражения в тип Integer.

Пример функции CLng

В этом примере функция CLng используется для преобразования выражения в тип Long.

Пример функции CSng

В этом примере функция CSng используется для преобразования выражения в тип Single.

Пример функции CStr

В этом примере функция CStr используется для преобразования выражения в тип String.

Пример функции CVar

В этом примере функция CVar используется для преобразования выражения в тип Variant.

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

Источник

VBA Excel. Функции преобразования типов

Функции преобразования типов данных в VBA Excel. Наименования функций, синтаксис, типы возвращаемых данных, диапазоны допустимых значений выражения-аргумента.

Синтаксис функций преобразования

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

Если аргумент, переданный в функцию, не входит в диапазон типа, в который преобразуются данные, происходит ошибка.

Функции преобразования типов

Наименования функций преобразования типов, типы возвращаемых данных, диапазоны допустимых значений для аргумента:

Функция Тип данных Диапазон значений аргумента
CBool Boolean Любое допустимое строковое или числовое выражение.
CByte Byte От 0 до 255.
CCur Currency От -922 337 203 685 477,5808 до 922 337 203 685 477,5807.
CDate Date Любое допустимое выражение даты.
CDbl Double От -1,79769313486231E308 до -4,94065645841247E-324 для отрицательных значений; от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений.
CDec Decimal 79 228 162 514 264 337 593 543 950 335 для чисел без десятичных знаков. Для чисел с 28 десятичными знаками диапазон составляет 7,9228162514264337593543950335. Наименьшим возможным числом, отличным от нуля, является число 0,0000000000000000000000000001.
CInt Integer От -32 768 до 32 767, дробная часть округляется.
CLng Long От -2 147 483 648 до 2 147 483 647, дробная часть округляется.
CSng Single От -3,402823E38 до -1,401298E-45 для отрицательных значений; от 1,401298E-45 до 3,402823E38 для положительных значений.
CStr String Результат, возвращаемый функцией CStr, зависит от аргумента Выражение.
CVar Variant Диапазон совпадает с типом Double для числовых значений и с типом String для нечисловых значений.

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

Функция Тип данных Диапазон значений аргумента
CLngLng LongLong От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807, дробная часть округляется. Действительно только для 64-разрядных платформ.
CLngPtr LongPtr От -2 147 483 648 до 2 147 483 647 для 32-разрядных платформ, от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 для 64-разрядных платформ, дробная часть округляется в обоих типах систем.

Примеры преобразования типов

Функция CBool

Функция CBool используется для преобразования выражений в тип данных Boolean.

Источник

Vba excel изменить тип переменной

На этом шаге мы перечислим функции преобразования форматов .

Преобразование строки в число и обратно осуществляют следующими функциями.

Функция Назначение
Val ( строка ) Возвращает числа, содержащиеся в строке, как числовое значение соответствующего типа
Str ( число ) Возвращает значение типа Variant (String) , являющееся строковым представлением числа

Таблица 1. Преобразование строки в число и обратно

В качестве допустимого десятичного разделителя функция Str воспринимает только точку. При наличии другого десятичного разделителя (например, запятой) для преобразования чисел в строки следует использовать функцию CStr , указанную в конце этого шага.

Чтобы представить числовое значение как дату, время, денежное значение или в специальном формате, следует использовать функцию Format .

Функция Format возвращает значение типа Variant (String) , содержащее выражение, отформатированное согласно инструкциям, заданным в описании формата. Синтаксис:

При построении пользовательского числового формата возможно использование следующих символов.

Символ Назначение
0 Резервирует позицию цифрового разряда. Отображает цифру или нуль. Если у числа, представленного аргументом, есть какая-нибудь цифра в той позиции разряда, где в строке формата находится 0, функция отображает эту цифру аргумента, если нет — в этой позиции отображается нуль
# Резервирует позицию цифрового разряда. Отображает цифру или ничего не отображает. Если у числа, представленного аргументом, есть какая-нибудь цифра в той позиции разряда, где в строке формата находится #, функция отображает эту цифру аргумента, если нет — в исходной позиции не отображается ничего. Действие данного символа аналогично действию 0, за исключением того, что лидирующие нули не отображаются
. ( точка ) Резервирует позицию десятичного разделителя. Указание точки в строке формата определяет, сколько разрядов необходимо отображать слева и справа от десятичной точки
% Резервирует процентное отображение числа
, Разделитель разряда сотен от тысяч
: Разделитель часов, минут и секунд в категории форматов Время (Time)
/ Разделитель дня, месяца и года в категории форматов Дата (Date)
E+, E-, e+, e- Разделитель мантиссы и порядка в экспоненциальном формате

Таблица 2. Символы, используемые в числовом формате

Кроме функций Val и Str в VBA имеются следующие функции преобразования типов выражений из данного в указанный.

Функция Тип, в который преобразуется выражение
CBool ( Выражение ) Boolean
CByte ( Выражение ) Byte
CCur ( Выражение ) Currency
CDate ( Выражение ) Date
СDbl ( Выражение ) Double
CDec ( Выражение ) Decimal
CInt ( Выражение ) Integer
CLng ( Выражение ) Long
CSng ( Выражение ) Single
CVar ( Выражение ) Variant
CStr ( Выражение ) String

Таблица 3. Функции преобразования форматов

На следующем шаге мы рассмотрим функции обработки строк .

Источник

Numeric values are defined by data types like integer or byte. These data types are used for optimizing the processing and memory allocation in Excel. In this guide, we’re going to show you how to convert string into number in Excel VBA.

Download Workbook

Data types in VBA

Like in some other programming languages, VBA uses data types to identify what variables it can store and how they are stored. Most of the data types in VBA define numeric values. Here is a brief list of numeric data types:

Data type Storage Range
Byte 1 byte 0 to 255
Integer 2 bytes -32,768 to 32,767
Long 4 bytes -2,147,483,648 to 2,147,483,647
Single 4 bytes -3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values
Double 8 bytes -1.79769313486231E308 to-4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values
LongLong 8 bytes

-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807

Valid on 64-bit platforms only.

Currency 8 bytes -922,337,203,685,477.5808 to 922,337,203,685,477.5807
Decimal 14 bytes +/-79,228,162,514,264,337,593,543,950,335 with no decimal point;
+/-7.9228162514264337593543950335 with 28 places to the right of the decimal

Since there are many numeric data types, there are many functions to convert a string into number in Excel VBA.

Functions to a convert string into number in Excel VBA

All conversion functions use the same syntax: Each requires a single string argument to convert into a number. For example:

Each function returns an error If the string argument either is not a numeric or is outside the range of the data type being converted.

CInt(«A») returns a type mismatch error, because the «A» is not a numeric value.

CByte(«1250») returns an overflow exception.

Function Return type Example
CByte Byte CByte(«65.75») returns 66
CCur Currency CCur(«$256,000.50») returns 256000.5
CDbl Double CDbl(128.239856 * 4.8 * 0.04) returns 24.622052352
CDec Decimal CDec(«15000000.5678») returns 15000000.5678
CInt Integer CInt(«1234.56») returns 1235
CLng Long CLng(«1,500,000.88») returns 15000001
CLngLng LongLong CLngLng(«1,250,500,000.88») returns 1250500001
CSng Single CSng(«5.67854») returns 5.67854

Bonus: Use IsNumeric function to verify value

To avoid type mismatch errors, you can use the IsNumeric function to check if the expression is numeric or not. The function returns Boolean value based on the expression. TRUE if the expression is numeric, FALSE otherwise.

Here is a sample function that can check the data first, and convert the it into an integer if it is numeric. If the argument is not a valid number, the function returns 0.

Function ConvertInt(arg As String) As Integer
 If IsNumeric(arg) Then ConvertInt = CInt(arg)
End Function

Описанные ниже функции позволяют преобразовать переданный параметр, который может быть или числом или строкой к заданному типу данных vba. Отличительная особенность данных функций vba преобразования типов от остальных – префикс C (от слова Convert), после которого следует краткое имя типа данных, к которому происходит преобразование (например, Bool – Boolean, Cur – Currency, и так далее).

CBool(par) – Преобразование к типу Boolean. Если параметр par будет отличаться от 0, то функция вернет значение true, в противном случае – false.

CByte(par) – Преобразование к типу Byte. Параметр par должен содержать числовое значение или строку, которые являются числом без знака в диапазоне значений от 0 до 255. Условия преобразования:

  • Если значение дробной части меньше 0.5, то она будет отброшена. В случае, если дробная часть больше 0.5 – к целой части добавится единица. Если же дробная часть ровна 0.5, то произойдет округление до ближайшего четного числа.
  • Если переданный параметр является строкой, то он должен содержать только цифры, в противном случае произойдет генерация ошибки.
  • В случае, если параметр содержит отрицательное число или число, которое больше 255, то также произойдет генерация ошибки. (vba преобразование типов)

CCur(par) – Преобразование к типу vba Currency. Передаваемый параметр должен содержать значение в диапазоне от -922 337 203 685 477.5808 до 922 337 203 685 477.5807.

Условия преобразования:

  • Если параметр содержит дробное число, содержащее больше 4 знаков в дробной части, то функция округляет его до четырех десятичных знаков.
  • Если параметр не входит в допустимый диапазон, то произойдет генерация ошибки.

CDate(par) – Преобразует переданный параметр vba в тип дата.

CDbl(par) – Преобразование к типу vba Double. Переданный параметр должен содержать любое числовое значение или строку, которые входят в диапазон от -1.79769313486232E308 до -4.94065645841247E-324 для отрицательных значений, и от 4.94065645841247E-324 до 1.79769313486232E308 для положительных значений.

Условия преобразования:

  • Если значение переданного параметра не попадает в допустимый диапазон, то произойдет ошибка. (vba преобразование типов)
  • Если параметр является строкой, содержащей не только цифры, то произойдет ошибка.

CDec(par) – Преобразование к типу vba Decimal. Параметр должен содержать любое числовое или строковое значение, входящее в диапазон представляющий целое число в диапазоне +/-79 228 162 514 264 337 593 543 950 335 или смешанное с не более чем 28 цифрами в дробной части в диапазоне +/-7.9228162514264337593543950335. Минимальным возможным ненулевым числом является 0.0000000000000000000000000001.

Условия преобразования:

  • Если значение параметра не входит в допустимый диапазон – произойдет генерация сообщения об ошибке.
  • Если передаваемый параметр является строкой и содержит не только цифры, то произойдет генерация ошибки.

CInt(par) – Преобразование к типу vba Integer. Передаваемый параметр должен входить в диапазон чисел от -32768 до 32767.

Условия преобразования:

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

CLng(par) – Преобразование к типу vba Long, допустимы диапазон передаваемого параметра числа от -2147483648 до 2147483647.

Условия преобразования:

  • Если значение параметра не входит в допустимый диапазон – произойдет генерация сообщения об ошибке.
  • Если передаваемый параметр является строкой и содержит не только цифры, то произойдет генерация ошибки.
  • Если передаваемый параметр содержит дробную часть, которая равна 0.5, то произойдет округление до ближайшего четного числа.

CSng(par) – Преобразование к типу vba Single. Допустимый диапазон — число от -3.402823E8 до -1.401298E-45 для отрицательных значений и от 1.401298E-45 до 3.402823E8 для положительных значений.

Условия преобразования:

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

CStr(par) – Преобразует переданный параметр в строковое значение.

Str(par) — Аналогично функции CStr, но перед положительными числами вставляется пробел.

CVar(par) – Преобразует переданы параметр в тип vba Varint.

CVDate(par) – Фактически, функция аналогична CDate, и используется только для совместимости.

Val(par) — Извлекает из переданного параметра только цифры.

TypeName(par) – Функция возвращает имя типа данных vba, для переданного параметра.

Следующие функции преобразования vba возвращают логические значения true или false, и предназначены для проверки переданного параметра на конкретный тип данных.

IsNumeric(par) — Число

IsDate(par) — Дата

IsArray(par) — Массив

IsEmpty(par) – Тип Empty

IsError(par) — Ошибка

IsMissing(par) – Необязательный параметр, переданный в процедуру

IsNull(par) – Пустое значение

IsObject(par) — Объект

Для преобразования числового значения к восьмеричному или шестнадцатеричному виду, применяются следующие функции:

Hex(par) – Шестнадцатеричный вид.

Oct(par) – Восьмеричный вид.

Помимо данных функций преобразования типов vba, для формирования восьмеричного или шестнадцатеричного вида числа, можно использовать следующий формат при записи:

&O – Буква O говорит, что мы хотим прописать восьмеричное значение, которое следует после символа O.

&HA — Буква H говорит, что мы хотим прописать шестнадцатеричное значение, которое следует после символа H.

Так как большая часть приведенных функций используется и в языке VBScript, то примеры с ними можно посмотреть в статьях «Урок 4 по VBScript: преобразование типов данных» и «Урок 10 по VBScript: Функции — математические и для работы с подтипами данных«.

Функции преобразования типов (Visual Basic)

Visual Studio 2013

Д ругие версии

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

CBool(expression)

CByte(expression)

CChar(expression)

CDate(expression)

CDbl(expression)

CDec(expression)

CInt(expression)

CLng(expression)

CObj(expression)

CSByte(expression)

CShort(expression)

CSng(expression)

CStr(expression)

CUInt(expression)

CULng(expression)

CUShort(expression)

Часть

expression

Обязательный. Любое выражение исходного типа данных.

Тип данных возвращаемого значения.

Имя функции определяет возвращаемый тип, как показано в следующей таблице.

Пример

В следующем примере преобразуется переменная Object в Integer и String.

Public Sub objectConversion(ByVal anObject As Object)

Dim anInteger As Integer

Dim aString As String

anInteger = CType(anObject, Integer)

aString = CType(anObject, String)

End Sub

Имя функции

Возвращаемый тип данных.

Диапазон для аргумента expression

CBool

Тип данных Boolean (Visual Basic)

Любое допустимое Char, String или числовое выражение.

CByte

Тип данных Byte (Visual Basic)

от 0 до 255 (без знака); дробная часть округляется.1

CChar

Тип данных Char (Visual Basic)

Любое допустимое Char или String выражение; преобразуется только первый знак String; значение может быть от 0 до 65535 (без знака).

CDate

Тип данных Date (Visual Basic)

Любое допустимое представление даты и времени.

CDbl

Тип данных Double (Visual Basic)

от -1.79769313486231570E+308 до -4.94065645841246544E-324 для отрицательных значений; от 4.94065645841246544E-324 до 1.79769313486231570E+308 для положительных значений.

CDec

Тип данных Decimal (Visual Basic)

+/-79228162514264337593543950335 для целых чисел, т.е. чисел без знаков после запятой. Для чисел с 28 десятичными разрядами диапазоном является +/-7.9228162514264337593543950335. Наименьшее возможное ненулевое число это 0.0000000000000000000000000001 (+/-1E-28).

CInt

Тип данных Integer (Visual Basic)

от -2147483648 до 2147483647; дробная часть округляется.1

CLng

Тип данных Long (Visual Basic)

от -9,223,372,036,854,775,808 до 9,223,372,036,854,775,807; дробная часть округляется.1

CObj

Тип данных Object

Любое допустимое выражение.

CSByte

Тип данных SByte (Visual Basic)

от -128 до 127; дробная часть округляется.1

CShort

Тип данных Short (Visual Basic)

от -32768 до 32767; дробная часть округляется.1

CSng

Тип данных Single (Visual Basic)

(От -3,402823E+38 до -1,401298E-45 для отрицательных значений; от 1,401298E-45 до 3,402823E+38 для положительных значений.

CStr

Тип данных String (Visual Basic)

Возвращаемые значения функции CStr зависят от аргумента expression. Дополнительные сведения см. в разделе Возвращаемые значения функции CStr (Visual Basic) .

CUInt

Тип данных UInteger

от 0 до 4,294,967,295 (без знака); дробная часть округляется.1

CULng

Тип данных ULong (Visual Basic)

от 0 до 18446744073709551615 (без знака); дробная часть округляется.1

CUShort

Тип данных UShort (Visual Basic)

от 0 до 65535 (без знака); дробная часть округляется.1

1 Дробные части могут быть подчиняться специальному типу округления под названием банковское округление. См. примечания для дополнительных сведений.

Заметки

Как правило предпочтительнее использовать функции преобразования типа Visual Basic, чем методы .NET Framework, например ToString() в классе Convert или в отдельном типе структуры или класса. Функции языка Visual Basic предназначены для оптимального взаимодействия с Visual Basic, и они также сделают исходный код короче и облегчат его чтение. Кроме того методы преобразования .NET Framework не всегда получают тот же результат, что функции Visual Basic, например при преобразовании Boolean к Integer. Дополнительные сведения см. в разделе Устранение неполадок, связанных с типами данных (Visual Basic) .

Поведение

  • Приведение типа данных. В общем случае, функции преобразования типов данных можно использовать для приведения результата некоторой операции к определенному типу данных вместо типа данных, получаемого по умолчанию. Например, функция CDec используется для принудительного приведения результатов операций к десятичному типу в тех случаях, когда получаемые значения относятся к типу данных с одинарной точностью, двойной точностью или к целочисленному типу.
  • Сбой преобразования. Если параметр expression, передаваемый в функцию, находится вне диапазона значений типа данных, в который преобразуется expression, возникает ошибка OverflowException .
  • Дробная часть. При преобразовании нецелого значения к целочисленному типу функции преобразования целых чисел (CByte, CInt, CLng, CSByte, CShort, CUInt, CULng и CUShort) удаляют дробную часть и округляют значение до ближайшего целого числа.
  • Если дробная часть равна точно 0,5, то функции преобразования целых чисел округлят его до ближайшего четного целого числа. Например, 0,5 округляется до 0, а 1,5 и 2,5 округляются до 2. Это иногда называется банковским округлением, и его целью является компенсация сдвигов, которые могут накапливаться при сложении многих таких чисел.

    CInt и CLng отличаются от функций Int и Fix , которые вместо округления отсекают дробную часть числа. Кроме того Fix и Int всегда возвращают значение того же типа данных, что и переданное значение.

  • Преобразования даты/времени. Функция IsDate используется для определения возможности преобразования значения в дату и время. CDate распознает литералы даты и литералы времени, но не числовые значения. Чтобы преобразовать значение Date Visual Basic 6.0 к Date Visual Basic 2005 или более поздних версий, можно использовать метод DateTime.FromOADate .
  • Нейтральные значения даты/времени. Тип данных Date (Visual Basic) всегда содержит и дату, и время. При преобразовании типов в Visual Basic нейтральным значением даты считается 1/1/1 (1 января 1 года), а нейтральным значением времени — 00:00:00 (полночь). Если значение с типом Date преобразуется в строку, функция CStr не включает нейтральные значения в конечную строку. Например, при преобразовании значения #January 1, 0001 9:30:00# в строку, будет возвращен результат «9:30:00»; дата отбрасывается. При этом сведения о дате останутся в исходном значении Date и могут быть извлечены с помощью таких функций, как DatePart .
  • Учет языковых и региональных параметров. Функции преобразования типов, включающие строки, выполняют преобразования на основе текущих языковых и региональных параметров для приложения. Функция CDate распознает форматы даты согласно региональным параметрам системы. Необходимо предоставить день, месяц и год в правильном порядке для имеющихся региональных настроек, в противном случае дата может интерпретироваться неправильно. Полный формат даты не распознается, если он содержит строковое значение дня недели, например «Wednesday».

Если требуется преобразовать в или из строкового представление значения в формате, отличном от задаваемого языка, то невозможно использовать функции преобразования типа Visual Basic. Чтобы сделать это, используйте методы ToString(IFormatProvider) и Parse(String, IFormatProvider) для этих типов значений. Например, используйте Double.Parse при преобразовании строки к Double и используйте Double.ToString при преобразовании значения из типа Double в строку.

Функция CType

Ф ункция CType принимает второй аргумент typename и приводит expression к typename, где typename может быть любым типом данных, структурой, классом или интерфейсом, для которого существует допустимое преобразование.

Для сравнения CType с другими зарезервированными словами преобразования типов см. Оператор DirectCast (Visual Basic) и Оператор TryCast (Visual Basic) .

Пример использования функции CBool

В следующем примере для преобразования к Boolean используется функция CBool. Если результатом вычисления выражения является ненулевое значение, то CBool возвращает True; в противном случае она возвращает False.

VB

Dim a, b, c As Integer 

Dim check As Boolean

a = 5

b = 5

‘ The following line of code sets check to True.

check = CBool(a = b)

c = 0

‘ The following line of code sets check to False.

check = CBool(c)

Пример использования функции CByte

В следующем примере для преобразования к Byte используется функция CByte.

VB

Dim aDouble As Double 

Dim aByte As Byte

aDouble = 125.5678

‘ The following line of code sets aByte to 126.

aByte = CByte(aDouble)

Пример использования функции CChar

В следующем примере для преобразования первого символа выражения String к типу Char используется функция CChar.

VB

Dim aString As String 

Dim aChar As Char 

‘ CChar converts only the first character of the string.

aString = «BCD» 

‘ The following line of code sets aChar to «B».

aChar = CChar(aString)

Входным аргументом CChar должен быть тип данных Char или String. Невозможно использовать функцию CChar для преобразования числа в символ, поскольку функция CChar не может принимать данные числовых типов. В этом примере получается число, представляющее кодовую позицию (код символа), которое преобразуется в соответствующий символ. Использует функцию InputBox для получения строки цифр, CInt для преобразования строки к типу Integer, а ChrW для преобразования строки к типу Char.

VB

Dim someDigits As String 

Dim codePoint As Integer 

Dim thisChar As Char

someDigits = InputBox(«Enter code point of character:»)

codePoint = CInt(someDigits)

‘ The following line of code sets thisChar to the Char value of codePoint.

thisChar = ChrW(codePoint)

Пример использования функции CDate

В следующем примере для преобразования строк к Date используется функция CDate. Как правило, не рекомендуется жестко кодировать дату и время в виде строк (как показано в этом примере). Вместо этого используйте литералы даты и времени, например #Feb 12, 1969# и #4:45:23 PM#.

VB

Dim aDateString, aTimeString As String 

Dim aDate, aTime As Date

aDateString = «February 12, 1969»

aTimeString = «4:35:47 PM» 

‘ The following line of code sets aDate to a Date value.

aDate = CDate(aDateString)

‘ The following line of code sets aTime to Date value.

aTime = CDate(aTimeString)

Пример использования алгоритма CDbl

VB

Dim aDec As Decimal 

Dim aDbl As Double 

‘ The following line of code uses the literal type character D to make aDec a Decimal.

aDec = 234.456784D

‘ The following line of code sets aDbl to 1.9225456288E+1.

aDbl = CDbl(aDec * 8.2D * 0.01D)

Пример использования функции CDec

В следующем примере для преобразования числа к Decimal используется функция CDec.

VB

Dim aDouble As Double 

Dim aDecimal As Decimal

aDouble = 10000000.0587

‘ The following line of code sets aDecimal to 10000000.0587.

aDecimal = CDec(aDouble)

Пример использования функции CInt

В следующем примере для преобразования значения к Integer используется функция CInt.

VB

Dim aDbl As Double 

Dim anInt As Integer

aDbl = 2345.5678

‘ The following line of code sets anInt to 2346.

anInt = CInt(aDbl)

Пример использования алгоритма CLng

В следующем примере для преобразования значения к Long используется функция CLng.

VB

Dim aDbl1, aDbl2 As Double 

Dim aLng1, aLng2 As Long

aDbl1 = 25427.45

aDbl2 = 25427.55

‘ The following line of code sets aLng1 to 25427.

aLng1 = CLng(aDbl1)

‘ The following line of code sets aLng2 to 25428.

aLng2 = CLng(aDbl2)

Пример использования функции CObj

В следующем примере для преобразования числа к Object используется функция CObj. Переменная Object содержит только 4-байтовый указатель, указывающий на значение типа Double.

VB

Dim aDouble As Double 

Dim anObject As Object

aDouble = 2.7182818284

‘ The following line of code sets anObject to a pointer to aDouble.

anObject = CObj(aDouble)

Пример использования функции CSByte

В следующем примере для преобразования числа к SByte используется функция CSByte.

VB

Dim aDouble As Double 

Dim anSByte As SByte

aDouble = 39.501

‘ The following line of code sets anSByte to 40.

anSByte = CSByte(aDouble)

Пример использования функции CShort

В следующем примере для преобразования числа к Short используется функция CShort.

VB

Dim aByte As Byte 

Dim aShort As Short

aByte = 100

‘ The following line of code sets aShort to 100.

aShort = CShort(aByte)

Пример использования алгоритма CSng

В следующем примере для преобразования значения к Single используется функция CSng.

VB

Dim aDouble1, aDouble2 As Double 

Dim aSingle1, aSingle2 As Single

aDouble1 = 75.3421105

aDouble2 = 75.3421567

‘ The following line of code sets aSingle1 to 75.34211.

aSingle1 = CSng(aDouble1)

‘ The following line of code sets aSingle2 to 75.34216.

aSingle2 = CSng(aDouble2)

Пример использования алгоритма CStr

В следующем примере для преобразования числа к String используется функция CStr.

VB

Dim aDouble As Double 

Dim aString As String

aDouble = 437.324

‘ The following line of code sets aString to «437.324».

aString = CStr(aDouble)

В следующем примере для преобразования Date к String используется функция CStr.

VB

Dim aDate As Date 

Dim aString As String 

‘ The following line of code generates a COMPILER ERROR because of invalid format. 

‘ aDate = #February 12, 1969 00:00:00# 

‘ Date literals must be in the format #m/d/yyyy# or they are invalid. 

‘ The following line of code sets the time component of aDate to midnight.

aDate = #2/12/1969#

‘ The following conversion suppresses the neutral time value of 00:00:00. 

‘ The following line of code sets aString to «2/12/1969».

aString = CStr(aDate)

‘ The following line of code sets the time component of aDate to one second past midnight.

aDate = #2/12/1969 12:00:01 AM#

‘ The time component becomes part of the converted value. 

‘ The following line of code sets aString to «2/12/1969 12:00:01 AM».

aString = CStr(aDate)

Функция CStr всегда предоставляет значение с типом Date в стандартном кратком формате для текущих региональных параметров, например 6/15/2003 4:35:47 PM. Однако CStr подавляет нейтральные значения 1/1/0001 для даты и 00:00:00 для времени.

Более подробно сведения о значениях, возвращаемых CStr, содержатся в разделе Возвращаемые значения функции CStr (Visual Basic) .

Пример использования функции CUInt

В следующем примере для преобразования числа к UInteger используется функция CUInt.

VB

Dim aDouble As Double 

Dim aUInteger As UInteger

aDouble = 39.501

‘ The following line of code sets aUInteger to 40.

aUInteger = CUInt(aDouble)

Пример использования функции CULng

В следующем примере для преобразования числа к ULong используется функция CULng.

VB

Dim aDouble As Double 

Dim aULong As ULong

aDouble = 39.501

‘ The following line of code sets aULong to 40.

aULong = CULng(aDouble)

Пример использования функции CShort

В следующем примере для преобразования числа к UShort используется функция CUShort.

VB

Dim aDouble As Double 

Dim aUShort As UShort

aDouble = 39.501

‘ The following line of code sets aUShort to 40.

aUShort = CUShort(aDouble)

См. также

Ссылки

Функции преобразования (Visual Basic)

Asc

AscW

Chr

ChrW

Int

Fix

Format

Hex

Oct

Str

Val

Другие ресурсы

Преобразование типов в Visual Basic

Понравилась статья? Поделить с друзьями:
  • Vba excel защитить ячейку от изменений в excel
  • Vba excel имя листа в книге
  • Vba excel изменить текст в ячейке
  • Vba excel защитить все листы
  • Vba excel именованный диапазон в массив