Funções de Conversão de Tipo

Cada função impõe uma expressão para um tipo de dados específico.

Sintaxe

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

O argumento de expressão necessários é qualquer expressão numérica ou expressão de cadeia de caracteres.

Tipos de Retorno

O nome da função determina o tipo de retorno, conforme mostrado a seguir:

Função Tipo de retorno Intervalo de argumento de expressão
CBool Boolean Qualquer cadeia válida ou expressão numérica.
CByte Byte 0 para 255.
CCur Currency – 922,337,203,685,477.5808 a 922.337.203.685.477,5807.
CDate Date Qualquer expressão de data válida.
CDbl Double -1, 79769313486231E308 a-4, 94065645841247E-324 para valores negativos; 4.94065645841247E-324 a 1, 79769313486232E308 para valores positivos.
CDec Decimal 79.228.162.514.264.337.593.543.950.335 para números na escala zero, ou seja, números sem casas decimais. Para números com 28 casas decimais o intervalo é 7,9228162514264337593543950335. O menor número diferente de zero possível é 0,0000000000000000000000000001.
CInt Integer -32.768 a 32.767; frações são arredondadas.
CLng Long -2.147.483.648 a 2.147.483.647; frações são arredondadas.
CLngLng LongLong -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807; frações são arredondadas. (Válido somente em plataformas de 64 bits).
CLngPtr LongPtr -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.
CSng Single -3, 402823E38 a-1, 401298E-45 para valores negativos; 1, 401298E-45 as 3.402823 E38 para valores positivos.
CStr String Retornos para CStr variam de acordo com o argumento de expressão. Consulte a tabela a seguir.
CVar Variant Mesmo intervalo de Duplas para números. Mesmo intervalo de Cadeia para não numéricos.

Comentários

Se aexpressão passada para a função estiver fora do intervalo do tipo de dados convertidos, há um erro.

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. Conversões de LongLong para integrais menores não são permitidas.

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. 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.

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. 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.

Quando a parte fracionária é exatamente 0,5 CInt e CLng sempre arredonde para o próximo número par. Por exemplo, 0,5 é arredondado para 0 e 1,5 arredondado para 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. Além disso, Fix e Int sempre retorna um valor do mesmo tipo passado.

Use a funçãoIsDate para determinar se a data pode ser convertida para uma data ou hora. CDate reconhece literais de data e hora literais como alguns valores contidos no intervalo de datas aceitáveis. Ao converter um número em uma data, a parte do número inteiro é convertida em uma data. Qualquer parte fracionária do número é convertida em um período do dia, iniciando à meia-noite.

CDate reconhece os formatos de acordo com a configuração de localidade do sistema de data. 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. 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.

Uma função CVDate também é fornecida para compatibilidade com versões anteriores do 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. Como agora há um tipo dataintrínseco, não há mais necessidade de CVDate. O mesmo efeito pode ser alcançado convertendo uma expressão para uma Datae, em seguida, atribuindo-a a uma Variant. Essa técnica é consistente com a conversão de todos os outros tipos intrínsecos para seu subtipos de Variant equivalentes.

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.

Os retornos para CStr dependem do argumento de expressão .

Se a expressão for CStr retornará
Boolean Uma cadeia de caracteres que contém True ou False.
Date Uma cadeia de caracteres que contém uma data no formato de data abreviada do sistema.
Empty Uma cadeia de caracteres de tamanho zero ("").
Error Uma cadeia de caracteres que contém a palavra Error seguida do número de erro.
Null Um erro em tempo de execução.
Outro valor numérico Uma cadeia de caracteres que contém o número.

Exemplo de Função CBool

Este exemplo usa a funçãoCBool para converter uma expressão para um booliano. Se a expressão for avaliada como um valor diferente de zero, o CBool retorna Verdadeiro, caso contrário, retorna como Falso.

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 CByte

Este exemplo usa a funçãoCByte para converter uma expressão para um Byte.

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

Exemplo de Função CCur

Este exemplo usa a funçãoCCur para converter uma expressão para um Moeda.

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 CDate

Este exemplo usa a função CDate para converter uma cadeia de caracteres em uma Data. Em geral, embutir datas e horas como cadeias de caracteres (como mostrado neste exemplo) não é recomendável. Use literais de data e de hora como #2/12/1969# e #4:45:23 PM#, em vez disso.

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 CDbl

Este exemplo usa a funçãoCDbi para converter uma expressão para um Duplo.

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 CDec

Este exemplo usa a funçãoCDec para converter um valor numérico em um Decimal.

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

Exemplo de função CInt

Este exemplo usa a funçãoCInt para converter um valor numérico em um Inteiro.

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

Exemplo de Função CLng

Este exemplo usa a funçãoCLng para converter um valor numérico em um Longo.

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 CSng

Este exemplo usa a funçãoCSng para converter um valor numérico em um Único.

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 CStr

Este exemplo usa a funçãoCStr para converter um valor numérico em uma Cadeia.

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


Exemplo de função CVar

Este exemplo usa a funçãoCVar para converter uma expressão para uma Variant.

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

Confira também

Suporte e comentários

Tem dúvidas ou quer enviar comentários sobre o VBA para Office ou sobre esta documentação? 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.