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

Каждая функция приводит выражение к нужному типу данных.Each function coerces an expression to a specific data type.

СинтаксисSyntax

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

Обязательный аргумент выражение — это любое строковое или числовое выражение.The required expression argument is any string expression or numeric expression.

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

Тип возвращаемого значения определяется по имени функции в соответствии со следующей таблицей:The function name determines the return type as shown in the following:

ФункцияFunction Тип возвращаемых данныхReturn type Диапазон выражения-аргументаRange for expression argument
CBoolCBool BooleanBoolean Любое допустимое строковое или числовое выражение.Any valid string or numeric expression.
CByteCByte ByteByte От 0 до 255.0 to 255.
CCurCCur CurrencyCurrency От -922 337 203 685 477,5808 до 922 337 203 685 477,5807.-922,337,203,685,477.5808 to 922,337,203,685,477.5807.
CDateCDate DateDate Любое допустимое выражение даты.Any valid date expression.
CDblCDbl DoubleDouble От -1,79769313486231E308 до -4,94065645841247E-324 для отрицательных значений; от 4,94065645841247E-324 до 1,79769313486232E308 для положительных значений.-1.79769313486231E308 to -4.94065645841247E-324 for negative values; 4.94065645841247E-324 to 1.79769313486232E308 for positive values.
CDecCDec DecimalDecimal 79 228 162 514 264 337 593 543 950 335 для чисел без десятичных знаков.79,228,162,514,264,337,593,543,950,335 for zero-scaled numbers, that is, numbers with no decimal places. Для чисел с 28 десятичными знаками диапазон составляет 7,9228162514264337593543950335.For numbers with 28 decimal places, the range is 7.9228162514264337593543950335. Наименьшим возможным числом, отличным от нуля, является число 0,0000000000000000000000000001.The smallest possible non-zero number is 0.0000000000000000000000000001.
CIntCInt IntegerInteger От -32 768 до 32 767, дробная часть округляется.-32,768 to 32,767; fractions are rounded.
CLngCLng LongLong От -2 147 483 648 до 2 147 483 647, дробная часть округляется.-2,147,483,648 to 2,147,483,647; fractions are rounded.
CLngLngCLngLng LongLongLongLong От -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807; дробная часть округляется.-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807; fractions are rounded. (Действительно только для 64-разрядных платформ).(Valid on 64-bit platforms only.)
CLngPtrCLngPtr LongPtrLongPtr От -2 147 483 648 до 2 147 483 647 для 32-разрядных систем; от -9 223 372 036 854 775 808 до 9 223 372 036 854 775 807 для 64-разрядных систем; дробная часть округляется в обоих типах систем.-2,147,483,648 to 2,147,483,647 on 32-bit systems, -9,223,372,036,854,775,808 to 9,223,372,036,854,775,807 on 64-bit systems; fractions are rounded for 32-bit and 64-bit systems.
CSngCSng SingleSingle От -3,402823E38 до -1,401298E-45 для отрицательных значений; от 1,401298E-45 до 3,402823E38 для положительных значений.-3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values.
CStrCStr StringString Результат, возвращаемый функцией CStr, зависит от аргумента выражение.Returns for CStr depend on the expression argument.
CVarCVar VariantVariant Диапазон совпадает с типом Double для числовых значений иSame range as Double for numerics. с типом String для нечисловых значений.Same range as String for non-numerics.

ПримечанияRemarks

Если выражение, переданное в функцию, не входит в диапазон типа, в который преобразуются данные, происходит ошибка.If the expression passed to the function is outside the range of the data type being converted to, an error occurs.

Примечание

Функции преобразования должны использоваться для явного присвоения типа LongLong (включая тип LongPtr на 64-разрядных платформах) меньшим целочисленным типам.Conversion functions must be used to explicitly assign LongLong (including LongPtr on 64-bit platforms) to smaller integral types. Неявные преобразования типа LongLong в меньшие целочисленные типы не допускаются.Implicit conversions of LongLong to smaller integrals are not allowed.

Как правило, функции преобразования типов используются в тексте программ для того, чтобы указать, что результатом той или иной операции должны стать данные определенного типа, а не типа, заданного по умолчанию.In general, you can document your code using the data-type conversion functions to show that the result of some operation should be expressed as a particular data type rather than the default data type. Например, с помощью функции CCur можно принудительно перейти к вычислениям в денежном формате в тех случаях, в которых обычно используются действия с числами с обычной точностью, двойной точностью или с целыми числами.For example, use CCur to force currency arithmetic in cases where single-precision, double-precision, or integer arithmetic normally would occur.

Функции преобразования типа данных следует использовать вместо функции Val для преобразования типов данных в приложениях, поддерживающих различные региональные стандарты.You should use the data-type conversion functions instead of Val to provide internationally aware conversions from one data type to another. Например, при использовании функции CCur десятичные разделители, разделители групп разрядов и параметры денежных единиц распознаются в соответствии с языковыми и региональными параметрами компьютера.For example, when you use CCur, different decimal separators, different thousand separators, and various currency options are properly recognized depending on the locale setting of your computer.

Если дробная часть целого числа строго равна 0,5, функции CInt и CLng всегда округляют результат до ближайшего четного числа.When the fractional part is exactly 0.5, CInt and CLng always round it to the nearest even number. Например, 0,5 округляется до 0, а 1,5 — до 2.For example, 0.5 rounds to 0, and 1.5 rounds to 2. Функции CInt и CLng отличаются от функций Fix и Int, которые отбрасывают дробную часть числа, а не округляют ее.CInt and CLng differ from the Fix and Int functions, which truncate, rather than round, the fractional part of a number. Кроме того, функции Fix и Int всегда возвращают значение того же типа, что и переданное им выражение.Also, Fix and Int always return a value of the same type as is passed in.

Для определения возможности преобразования date в дату или время используется функция IsDate.Use the IsDate function to determine if date can be converted to a date or time. Функция CDate распознает литералы даты и времени, а также некоторые числа, которые находятся в диапазоне допустимых дат.CDate recognizes date literals and time literals as well as some numbers that fall within the range of acceptable dates. При преобразовании числа в дату преобразуется целая часть числа.When converting a number to a date, the whole number portion is converted to a date. Дробная часть преобразуется во время суток, начиная с полуночи.Any fractional part of the number is converted to a time of day, starting at midnight.

Функция CDate распознает форматы даты в соответствии с национальной настройкой системы.CDate recognizes date formats according to the locale setting of your system. Если формат передаваемого аргумента не соответствует распознаваемым настройкам даты, функция не сможет определить правильный порядок дней, месяцев и лет.The correct order of day, month, and year may not be determined if it is provided in a format other than one of the recognized date settings. Кроме того, длинный формат даты не распознается, если в нем содержится строка дня недели.In addition, a long date format is not recognized if it also contains the day-of-the-week string.

Функция CVDate предназначена для обеспечения совместимости с предыдущими версиями Visual Basic.A CVDate function is also provided for compatibility with previous versions of Visual Basic. Синтаксис функции CVDate не отличается от синтаксиса функции CDate; однако функция CVDate возвращает тип Variant, подтипом которого является тип Date, а не собственно тип Date.The syntax of the CVDate function is identical to the CDate function; however, CVDate returns a Variant whose subtype is Date instead of an actual Date type. Поскольку теперь реализован встроенный тип Date, необходимость в функции CVDate отпадает.Since there is now an intrinsic Date type, there is no further need for CVDate. Такой же результат можно получить, если преобразовать выражение в тип Date и присвоить его типу Variant.The same effect can be achieved by converting an expression to a Date, and then assigning it to a Variant. Этот способ позволяет преобразовать все прочие встроенные типы в эквивалентные им подтипы Variant.This technique is consistent with the conversion of all other intrinsic types to their equivalent Variant subtypes.

Примечание

Функция CDec не возвращает отдельный тип данных. Вместо этого она всегда возвращает результат типа Variant, значение которого преобразовано в подтип Decimal.The CDec function does not return a discrete data type; instead, it always returns a Variant whose value has been converted to a Decimal subtype.

Пример функции CBoolCBool function example

В этом примере функция CBool используется для преобразования выражения в тип Boolean.This example uses the CBool function to convert an expression to a Boolean. Если выражение разрешается в ненулевое значение, функция CBool возвращает значение True, в противном случае она возвращает значение False.If the expression evaluates to a nonzero value, CBool returns True, otherwise, it returns False.

Dim A, B, Check 
A = 5: B = 5 ' Initialize variables. 
Check = CBool(A = B) ' Check contains True. 
 
A = 0 ' Define variable. 
Check = CBool(A) ' Check contains False. 

Пример функции CByteCByte function example

В этом примере функция CByte используется для преобразования выражения в тип Byte.This example uses the CByte function to convert an expression to a Byte.

Dim MyDouble, MyByte 
MyDouble = 125.5678 ' MyDouble is a Double. 
MyByte = CByte(MyDouble) ' MyByte contains 126. 

Пример функции CCurCCur function example

В этом примере функция CCur используется для преобразования выражения в тип Currency.This example uses the CCur function to convert an expression to a Currency.

Dim MyDouble, MyCurr 
MyDouble = 543.214588 ' MyDouble is a Double. 
MyCurr = CCur(MyDouble * 2) ' Convert result of MyDouble * 2 
 ' (1086.429176) to a 
 ' Currency (1086.4292). 

Пример функции CDateCDate function example

В этом примере функция CDate используется для преобразования выражения в тип Date.This example uses the CDate function to convert a string to a Date. Как правило, не рекомендуется определять дату и время в виде строк (как показано в этом примере).In general, hard-coding dates and times as strings (as shown in this example) is not recommended. Вместо этого рекомендуется использовать литералы даты и времени, такие как #2/12/1969# и #4:45:23 PM#.Use date literals and time literals, such as #2/12/1969# and #4:45:23 PM#, instead.

Dim MyDate, MyShortDate, MyTime, MyShortTime 
MyDate = "February 12, 1969" ' Define date. 
MyShortDate = CDate(MyDate) ' Convert to Date data type. 
 
MyTime = "4:35:47 PM" ' Define time. 
MyShortTime = CDate(MyTime) ' Convert to Date data type. 

Пример функции CDblCDbl function example

В этом примере функция CDbl используется для преобразования выражения в тип Double.This example uses the CDbl function to convert an expression to a Double.

Dim MyCurr, MyDouble 
MyCurr = CCur(234.456784) ' MyCurr is a Currency. 
MyDouble = CDbl(MyCurr * 8.2 * 0.01) ' Convert result to a Double. 

Пример функции CDecCDec function example

В этом примере функция CDec используется для преобразования выражения в тип Decimal.This example uses the CDec function to convert a numeric value to a Decimal.

Dim MyDecimal, MyCurr 
MyCurr = 10000000.0587 ' MyCurr is a Currency. 
MyDecimal = CDec(MyCurr) ' MyDecimal is a Decimal. 

Пример функции CIntCInt function example

В этом примере функция CInt используется для преобразования выражения в тип Integer.This example uses the CInt function to convert a value to an Integer.

Dim MyDouble, MyInt 
MyDouble = 2345.5678 ' MyDouble is a Double. 
MyInt = CInt(MyDouble) ' MyInt contains 2346. 

Пример функции CLngCLng function example

В этом примере функция CLng используется для преобразования выражения в тип Long.This example uses the CLng function to convert a value to a Long.

Dim MyVal1, MyVal2, MyLong1, MyLong2 
MyVal1 = 25427.45: MyVal2 = 25427.55 ' MyVal1, MyVal2 are Doubles. 
MyLong1 = CLng(MyVal1) ' MyLong1 contains 25427. 
MyLong2 = CLng(MyVal2) ' MyLong2 contains 25428. 

Пример функции CSngCSng function example

В этом примере функция CSng используется для преобразования выражения в тип Single.This example uses the CSng function to convert a value to a Single.

Dim MyDouble1, MyDouble2, MySingle1, MySingle2 
' MyDouble1, MyDouble2 are Doubles. 
MyDouble1 = 75.3421115: MyDouble2 = 75.3421555 
MySingle1 = CSng(MyDouble1) ' MySingle1 contains 75.34211. 
MySingle2 = CSng(MyDouble2) ' MySingle2 contains 75.34216. 

Пример функции CStrCStr function example

В этом примере функция CStr используется для преобразования выражения в тип String.This example uses the CStr function to convert a numeric value to a String.

Dim MyDouble, MyString 
MyDouble = 437.324 ' MyDouble is a Double. 
MyString = CStr(MyDouble) ' MyString contains "437.324". 


Пример функции CVarCVar function example

В этом примере функция CVar используется для преобразования выражения в тип Variant.This example uses the CVar function to convert an expression to a Variant.

Dim MyInt, MyVar 
MyInt = 4534 ' MyInt is an Integer. 
MyVar = CVar(MyInt & 000) ' MyVar contains the string 
 ' 4534000. 

См. такжеSee also

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

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи?Have questions or feedback about Office VBA or this documentation? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.