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
- Resumo de tipos de dados
- Glossário do Editor do Visual Basic (VBE)
- Tópicos conceituais do Visual Basic
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.