Funções de Conversão de TipoType conversion functions

Cada função impõe uma expressão para um tipo de dados específico.Each function coerces an expression to a specific data type.

SintaxeSyntax

  • CBool(expression)CBool(expression)
  • CByte(expression)CByte(expression)
  • CCur(expression)CCur(expression)
  • CDate(expression)CDate(expression)
  • CDbl(expression)CDbl(expression)
  • CDec(expression)CDec(expression)
  • CInt(expression)CInt(expression)
  • CLng(expression)CLng(expression)
  • CLngLng (expressão) (válida em plataformas de 64 bits somente).CLngLng(expression) (Valid on 64-bit platforms only.)
  • CLngPtr(expression)CLngPtr(expression)
  • CSng(expression)CSng(expression)
  • CStr(expression)CStr(expression)
  • CVar(expression)CVar(expression)

O argumento de expressão necessários é qualquer expressão numérica ou expressão de cadeia de caracteres.The required expression argument is any string expression or numeric expression.

Tipos de RetornoReturn types

O nome da função determina o tipo de retorno, conforme mostrado a seguir:The function name determines the return type as shown in the following:

FunçãoFunction Tipo de retornoReturn type Intervalo de argumento de expressãoRange for expression argument
CBoolCBool BooleanBoolean Qualquer cadeia válida ou expressão numérica.Any valid string or numeric expression.
CByteCByte ByteByte 0 para 255.0 to 255.
CCurCCur CurrencyCurrency – 922,337,203,685,477.5808 a 922.337.203.685.477,5807.-922,337,203,685,477.5808 to 922,337,203,685,477.5807.
CDateCDate DateDate Qualquer expressão de data válida.Any valid date expression.
CDblCDbl DoubleDouble -1, 79769313486231E308 a-4, 94065645841247E-324 para valores negativos; 4.94065645841247E-324 a 1, 79769313486232E308 para valores positivos.-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 para números na escala zero, ou seja, números sem casas decimais.79,228,162,514,264,337,593,543,950,335 for zero-scaled numbers, that is, numbers with no decimal places. Para números com 28 casas decimais o intervalo é 7,9228162514264337593543950335.For numbers with 28 decimal places, the range is 7.9228162514264337593543950335. O menor número diferente de zero possível é 0,0000000000000000000000000001.The smallest possible non-zero number is 0.0000000000000000000000000001.
CIntCInt IntegerInteger -32.768 a 32.767; frações são arredondadas.-32,768 to 32,767; fractions are rounded.
CLngCLng LongLong -2.147.483.648 a 2.147.483.647; frações são arredondadas.-2,147,483,648 to 2,147,483,647; fractions are rounded.
CLngLngCLngLng LongLongLongLong -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807; frações são arredondadas.-9,223,372,036,854,775,808 to 9,223,372,036,854,775,807; fractions are rounded. (Válido somente em plataformas de 64 bits).(Valid on 64-bit platforms only.)
CLngPtrCLngPtr LongPtrLongPtr -2.147.483.648 a 2.147.483.647 em sistemas de 32 bits-9.223.372.036.854.775.808 para 9.223.372.036.854.775.807 em sistemas de 64 bits. Frações são arredondadas para sistemas de 32 bits e 64 bits.-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 a-1, 401298E-45 para valores negativos; 1, 401298E-45 as 3.402823 E38 para valores positivos.-3.402823E38 to -1.401298E-45 for negative values; 1.401298E-45 to 3.402823E38 for positive values.
CStrCStr StringString Retornos para CStr variam de acordo com o argumento de expressão.Returns for CStr depend on the expression argument.
CVarCVar VariantVariant Mesmo intervalo de Duplas para números.Same range as Double for numerics. Mesmo intervalo de Cadeia para não numéricos.Same range as String for non-numerics.

ComentáriosRemarks

Se a_expressão_ passada para a função estiver fora do intervalo do tipo de dados convertidos, há um erro.If the expression passed to the function is outside the range of the data type being converted to, an error occurs.

Observação

Funções de conversão que devem ser usadas para atribuir explicitamente LongLong (incluindo LongPtr em plataformas de 64 bits) em tipos integrais menores.Conversion functions must be used to explicitly assign LongLong (including LongPtr on 64-bit platforms) to smaller integral types. Conversões de LongLong para integrais menores não são permitidas.Implicit conversions of LongLong to smaller integrals are not allowed.

Em geral, você pode documentar seu código usando as funções de conversão de tipo de dados para mostrar que o resultado de alguma operação deve ser expresso como um tipo de dados específico em vez do tipo de dados padrão.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. Por exemplo, use CCur para forçar a aritmética de moeda nos casos em que a precisão simples, precisão dupla ou aritmética inteira normalmente ocorreria.For example, use CCur to force currency arithmetic in cases where single-precision, double-precision, or integer arithmetic normally would occur.

Você deve usar as funções de conversão de tipo de dados em vez de Val para fornecer o conhecimento internacional de conversões de um tipo de dados para outro.You should use the data-type conversion functions instead of Val to provide internationally aware conversions from one data type to another. Por exemplo, quando você usa CCur, diferentes separadores decimais e separadores de milhar diferentes e várias opções de moeda corretamente são reconhecidas dependendo da configuração de localidade do seu computador.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.

Quando a parte fracionária é exatamente 0,5 CInt e CLng sempre arredonde para o próximo número par.When the fractional part is exactly 0.5, CInt and CLng always round it to the nearest even number. Por exemplo, 0,5 é arredondado para 0 e 1,5 arredondado para 2.For example, 0.5 rounds to 0, and 1.5 rounds to 2. CInt e CLng são diferentes das funções Fix e Int, que truncam a parte fracionada de um número em vez de arredondá-la.CInt and CLng differ from the Fix and Int functions, which truncate, rather than round, the fractional part of a number. Além disso, Fix e Int sempre retorna um valor do mesmo tipo passado.Also, Fix and Int always return a value of the same type as is passed in.

Use a funçãoIsDate para determinar se a data pode ser convertida para uma data ou hora.Use the IsDate function to determine if date can be converted to a date or time. CDate reconhece literais de data e hora literais como alguns valores contidos no intervalo de datas aceitáveis.CDate recognizes date literals and time literals as well as some numbers that fall within the range of acceptable dates. Ao converter um número em uma data, a parte do número inteiro é convertida em uma data.When converting a number to a date, the whole number portion is converted to a date. Qualquer parte fracionária do número é convertida em um período do dia, iniciando à meia-noite.Any fractional part of the number is converted to a time of day, starting at midnight.

CDate reconhece os formatos de acordo com a configuração de localidade do sistema de data.CDate recognizes date formats according to the locale setting of your system. A ordem correta de dia, mês e ano não pode ser determinada se for fornecida em um formato diferente de uma das configurações de data reconhecidas.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. Além disso, um formato de data completa não é reconhecido se ele também contém a cadeia de caracteres de dia da semana.In addition, a long date format is not recognized if it also contains the day-of-the-week string.

Uma função CVDate também é fornecida para compatibilidade com versões anteriores do Visual Basic.A CVDate function is also provided for compatibility with previous versions of Visual Basic. A sintaxe da função CVDate é idêntica à função CDate; no entanto, CVDate retorna um Variant cujo subtipo é Data em vez de um tipo real de data.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. Como agora há um tipo dataintrínseco, não há mais necessidade de CVDate.Since there is now an intrinsic Date type, there is no further need for CVDate. O mesmo efeito pode ser alcançado convertendo uma expressão para uma Datae, em seguida, atribuindo-a a uma Variant.The same effect can be achieved by converting an expression to a Date, and then assigning it to a Variant. Essa técnica é consistente com a conversão de todos os outros tipos intrínsecos para seu subtipos de Variant equivalentes.This technique is consistent with the conversion of all other intrinsic types to their equivalent Variant subtypes.

Observação

A função CDec não retorna um tipo de dados discreto; em vez disso, retorna sempre uma Variant cujo valor tenha sido convertido em um subtipo 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.

Exemplo de Função CBoolCBool function example

Este exemplo usa a funçãoCBool para converter uma expressão para um booliano.This example uses the CBool function to convert an expression to a Boolean. Se a expressão for avaliada como um valor diferente de zero, o CBool retorna Verdadeiro, caso contrário, retorna como Falso.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. 

Exemplo de Função CByteCByte function example

Este exemplo usa a funçãoCByte para converter uma expressão para um 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. 

Exemplo de Função CCurCCur function example

Este exemplo usa a funçãoCCur para converter uma expressão para um Moeda.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). 

Exemplo de Função CDateCDate function example

Este exemplo usa a função CDate para converter uma cadeia de caracteres em uma Data.This example uses the CDate function to convert a string to a Date. Em geral, embutir datas e horas como cadeias de caracteres (como mostrado neste exemplo) não é recomendável.In general, hard-coding dates and times as strings (as shown in this example) is not recommended. Use literais de data e de hora como #2/12/1969# e #4:45:23 PM#, em vez disso.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. 

Exemplo de função CDblCDbl function example

Este exemplo usa a funçãoCDbi para converter uma expressão para um Duplo.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. 

Exemplo de Função CDecCDec function example

Este exemplo usa a funçãoCDec para converter um valor numérico em um 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. 

Exemplo de função CIntCInt function example

Este exemplo usa a funçãoCInt para converter um valor numérico em um Inteiro.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. 

Exemplo de Função CLngCLng function example

Este exemplo usa a funçãoCLng para converter um valor numérico em um Longo.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. 

Exemplo de função CSngCSng function example

Este exemplo usa a funçãoCSng para converter um valor numérico em um Único.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. 

Exemplo de função CStrCStr function example

Este exemplo usa a funçãoCStr para converter um valor numérico em uma Cadeia.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". 


Exemplo de função CVarCVar function example

Este exemplo usa a funçãoCVar para converter uma expressão para uma 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. 

Confira tambémSee also

Suporte e comentáriosSupport and feedback

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação?Have questions or feedback about Office VBA or this documentation? Confira Suporte e comentários sobre o VBA para Office a fim de obter orientação sobre as maneiras pelas quais você pode receber suporte e fornecer comentários.Please see Office VBA support and feedback for guidance about the ways you can receive support and provide feedback.