Funciones Type Conversion

Cada función convierte una expresión en un tipo de datos específico.

Sintaxis

  • CBool(expression)
  • CByte(expression)
  • CCur(expression)
  • CDate(expression)
  • CDbl(expression)
  • CDec(expression)
  • CInt(expression)
  • CLng(expression)
  • CLngLng(expression) (válida solo en plataformas de 64 bits).
  • CLngPtr(expression)
  • CSng(expression)
  • CStr(expression)
  • CVar(expression)

El argumento requerido expresión es cualquier expresión de cadena o numérica.

Tipos de valores devueltos

El nombre de la función determina el tipo de valor devuelto como se muestra a continuación:

Function Tipo de valores devueltos Rango del argumento expression
CBool Boolean Cualquier cadena o expresión numérica válida.
CByte Byte De 0 a 255.
CCur Currency -922,337,203,685,477.5808 a 922,337,203,685,477.5807.
CDate Fecha Cualquier expresión de fecha válida.
CDbl Doble -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 escalados a cero, es decir, números sin decimales. Para números con 28 posiciones decimales, el intervalo es 7.9228162514264337593543950335. El número distinto de cero más pequeño posible es 0.0000000000000000000000000001.
CInt Integer -32,768 a 32,767; las fracciones se redondean.
CLng Long -2,147,483,648 a 2,147,483,647; las fracciones se redondean.
CLngLng LongLong -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807; las fracciones se redondean. (Válido solo en plataformas de 64 bits.)
CLngPtr LongPtr -2,147,483,648 a 2,147,483,647 en sistemas de 32 bits, -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 en sistemas de 64 bits; las fracciones se redondean en sistemas de 32 y 64 bits.
CSng Single -3.402823E38 a -1.401298E-45 para valores negativos; 1.401298E-45 a 3.402823E38 para valores positivos.
CStr String Los valores devueltos para CStr dependen del argumento expression. Vea la siguiente tabla.
CVar Variant Mismo intervalo que para valores numéricos Doble. Mismo intervalo String que para valores no numéricos.

Observaciones

Si el argumento expression que se pasa a la función está fuera del rango del tipo de datos que se convierte, se produce un error.

Nota:

Las funciones de conversión deben usarse para asignar explícitamente LongLong (incluido LongPtr en plataformas de 64 bits) a tipos enteros más pequeños. No se permiten las conversiones implícitas de LongLong a integrales menores.

En general, puede documentar su código mediante las funciones de conversión de tipo de datos para mostrar que el resultado de alguna operación debe expresarse como un tipo de datos en particular en lugar del tipo de datos predeterminado. Por ejemplo, use CCur para forzar la aritmética de moneda en casos en los que ocurriría normalmente la aritmética de precisión sencilla, precisión doble o entero.

Debe usar las funciones de conversión de tipos de datos en lugar de Val para proporcionar conversiones internacionales de un tipo de datos a otro. Por ejemplo, al usar CCur, se reconocen correctamente diferentes separadores decimales, separadores de miles y opciones de moneda según la configuración regional de su equipo.

Cuando la parte fraccionaria es exactamente 0,5, CInt y CLng redondean siempre al número par más próximo. Por ejemplo, 0,5 se redondea a 0 y 1,5 se redondea a 2. CInt y CLng difieren de las funciones Fix e Int, que truncan, en vez de redondear, la parte fraccional de un número. Además, Fix e Int siempre devuelven un valor del mismo tipo que se pasa.

Use la función IsDate para determinar si date puede convertirse a una fecha u hora. CDate reconoce literales de fecha y hora, así como algunos números que se encuentran dentro del rango de fechas aceptables. Cuando se convierte un número en una fecha, la parte del número entero se convierte en una fecha. Cualquier parte fraccional del número se convierte a una hora del día, empezando por las 0:00.

CDate reconoce formatos de fecha según la configuración regional del sistema. Es posible que el orden correcto de día, mes y año no esté determinado si se proporciona en un formato distinto al de la configuración de fecha reconocida. Además, el formato de fecha larga no se reconoce si también contiene la cadena de día de la semana.

También se proporciona una función CVDate por motivos de compatibilidad con versiones anteriores de Visual Basic. La sintaxis de la función CVDate es idéntica a la función CDate; sin embargo, CVDate devuelve un Variant cuyo subtipo es Date en lugar de un tipo Date en sí. Dado que ahora hay un tipo Date intrínseco, CVDate ya no es necesario. Se consigue el mismo efecto al convertir una expresión en un Date y asignándolo a un Variant. Esta técnica es coherente con la conversión de todos los demás tipos intrínsecos a sus subtipos Variant equivalentes.

Nota:

La función CDec no devuelve un tipo de datos discreto; en su lugar, siempre devuelve una Variant cuyo valor se ha convertido a un subtipo Decimal.

Las devoluciones de CStr dependen del argumento expression .

#If expresión Then CStr devuelve
Booleano Una cadena que contiene True o False.
Fecha Una cadena que contiene una fecha en el formato de fecha corta del sistema.
Empty Una cadena de longitud cero ("").
Error Una cadena que contiene la palabra Error, seguida del número de error.
Null Un error en tiempo de ejecución.
Otro valor numérico Una cadena que contiene el número.

Ejemplo de la función CBool

Este ejemplo usa la función CBool para convertir una expresión en un Booleano. Si la expresión da como resultado un valor distinto de cero, CBool devuelve True, en caso contrario, devuelve 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. 

Ejemplo de la función CByte

Este ejemplo usa la función CByte para convertir una expresión en un Byte.

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

Ejemplo de la función CCur

Este ejemplo usa la función CCur para convertir una expresión en Moneda.

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

Ejemplo de la función CDate

Este ejemplo usa la función CDate para convertir una cadena en Date. En general, no se recomienda codificar fechas y horas como cadenas (como se muestra en este ejemplo). En su lugar, use literales de fecha y hora, como #2/12/1969# y #4:45:23 PM#.

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. 

Ejemplo de la función CDbl

Este ejemplo usa la función CDbl para convertir una expresión en un Doble.

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

Ejemplo de la función CDec

Este ejemplo usa la función CDec para convertir un valor numérico en un Decimal.

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

Ejemplo de la función CInt

Este ejemplo usa la función CInt para convertir un valor en un Integer.

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

Ejemplo de la función CLng

Este ejemplo usa la función CLng para convertir un valor en un 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. 

Ejemplo de la función CSng

Este ejemplo usa la función CSng para convertir un valor en un 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. 

Ejemplo de la función CStr

Este ejemplo usa la función CStr para convertir un valor numérico en una Cadena.

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


Ejemplo de la función CVar

Este ejemplo usa la función CVar para convertir una expresión en un Variant.

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

Vea también

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.