Convertir cadena a número en VBA

Iqra Hasnain 26 mayo 2022
Convertir cadena a número en VBA

Este artículo discutirá cómo podemos convertir una cadena en un número en VBA Excel. Hay una guía paso a paso y muchos ejemplos para nuestra comprensión.

Convertir cadena a número en VBA

En el código VBA, es obligatorio convertir los números guardados como texto en números reales. Tenemos muchas opciones de conversión.

Podemos convertir cadenas en números de los tipos de datos Byte, Integer, Long, Single, Double, Currency y Decimal. Discutiremos cada conversión en detalle con ejemplos.

Convertir cadena a byte en VBA

Podemos transformar fácilmente una cadena en un número del tipo de datos byte con la ayuda del siguiente código.

# vba
byte = CByte(str)

Podemos usar la función CByte() para lograr esta conversión. La sentencia anterior tiene dos elementos: CByte() y cadena.

La función CByte() obliga a la cadena a cambiar a un tipo de byte. CByte() se usa a menudo para realizar la transformación de cadena reconocida internacionalmente a tipo de datos de bytes.

En términos simples, CByte() comúnmente distingue separadores decimales/miles distintivos y muchas opciones de moneda que dependen de la ubicación de su computadora. El rango que puede contener un tipo de datos de byte es de 0 a 225. Si su cadena no se encuentra entre este rango, se producirá un error.

Aquí hay un ejemplo de macro en el que tenemos convertStr como argumento para convertir una cadena en un byte.

# vba
Function convertStr(newStr As Variant)

    MsgBox (CByte(newStr))

End Function

Sub newFunc()
convertStr ("12")
End Sub

Producción:

convertir cadena a número como byte en VBA

Convertir cadena a entero en VBA

Con la ayuda de la siguiente declaración, puede convertir fácilmente una cadena en un número del tipo de datos entero. La sintaxis de esta función se muestra a continuación.

# vba
CInt(newStr)

Se recomienda utilizar la función Clnt() para cambiar una cadena a un tipo de datos entero. Esta función obliga a la cadena a cambiar al tipo de datos entero.

Si una cadena contiene una fracción, esta función la convertirá en un número entero. Si la fracción es precisamente 0,4, esta función la cambiará al número par más cercano.

Por ejemplo:

# vba
0.4 will become 0.
1.6 and 2.4 both will become 2.
3.7 and 4.3 will become 4

Clnt() se usa a menudo para realizar la transformación de cadena con reconocimiento internacional en el tipo de datos entero. En términos simples, Clnt() comúnmente distingue separadores decimales/miles distintivos y muchas opciones de moneda que dependen de la ubicación de nuestra computadora.

El rango entre el cual un tipo de datos enteros puede contener números es de -32 768 a 32 767. Si su cadena no se encuentra dentro de este rango, se producirá un error.

Veamos un ejemplo y usemos la función CInt() como se muestra a continuación. Este ejemplo establece newStr como argumento para cambiar una cadena a un número entero, como se muestra a continuación.

# vba
Function convertToInteger(newStr As Variant)

    MsgBox (CInt(newStr))

End Function

Sub newFunc()
convertToInteger ("12.5")
End Sub

Producción:

convertir cadena a número como int en VBA

Convertir cadena a larga en VBA

Podemos usar la función CLng() para lograr esta conversión. La sintaxis de esta función se muestra a continuación.

# vba
CLng(Str)

Podemos usar la función CLng() cuando nuestro objetivo es cambiar una cadena en varios tipos de datos largos. Los elementos de esta sentencia son CLng() y cadena.

Esta función obliga a una cadena a cambiar al tipo de datos largo.

Si una cadena contiene una fracción, esta función la redondeará. Si la fracción es precisamente 0,4, esta función la cambiará al número par más cercano, como se muestra a continuación.

# vba
0.4 will become 0.
1.6 and 2.4 both will become 2.
3.7 and 4.3 will become 4

CLng() se usa a menudo para realizar la transformación de cadena con reconocimiento internacional a tipos de datos largos. En términos simples, CLng() comúnmente distingue separadores decimales/miles distintivos y muchas opciones de moneda que dependen de la ubicación de su computadora.

El rango entre el cual un tipo de datos entero puede contener números es -2,147,483,648 a 2,147,483,647. Si su cadena no se encuentra dentro de este rango, se producirá un error.

Veamos un ejemplo y usemos la función CLng(). En este ejemplo, hemos establecido newStr como argumento para cambiar una cadena a larga, como se muestra a continuación.

# vba
Function convertToLong(newStr As Variant)

    MsgBox (CLng(newStr))

End Function

Sub newFunc()
convertToLong ("15.7")
End Sub

Producción:

convertir cadena a número siempre que en VBA

El tipo de datos largos difiere del tipo de datos enteros en una sola cosa. Los números más grandes son aceptables en tipos de datos largos.

Pero no había suficiente memoria en los viejos tiempos y no se recomendaba usar tipos de datos largos.

En los tiempos modernos, la memoria ya no es un problema. Podemos usar el tipo de datos largo en lugar de un número entero.

Convertir cadena a simple en VBA

Podemos transformar fácilmente una cadena en un número de un solo tipo de datos con la ayuda de la siguiente sintaxis, como se muestra a continuación.

# vba
CSng(str)

Podemos usar la función CSng() para lograr esta conversión. Hay dos elementos en la instrucción anterior, CSng() y cadena.

Esta función obliga a una cadena a cambiar a un solo tipo de datos.

CSng() se usa a menudo para realizar la transformación de cadena con reconocimiento internacional a un solo tipo de datos. CSng() comúnmente distingue separadores decimales/mil distintivos y opciones de moneda que dependen de la ubicación de su computadora.

El rango entre el cual un solo tipo de datos puede contener números de coma flotante es

  • 3.402823E38 a -1.401298E-45 cuando los valores son negativos
  • 1.401298E-45 a 3.402823E38 cuando los valores son positivos

Aparecerá un error si su cadena no se encuentra dentro de este rango. Como se muestra a continuación, veamos un ejemplo en el que establecemos newStr como argumento para convertir una cadena en una única.

# vba
Function convertToSingle(newStr As Variant)

    MsgBox (CSng(newStr))

End Function

Sub newFunc()
convertToSingle ("1.3")
End Sub

Producción:

convertir cadena a número como único en VBA

Convertir cadena a doble en VBA

Con la ayuda de la siguiente declaración, podemos convertir fácilmente una cadena en varios tipos de datos dobles. La sintaxis de esta función es como se muestra a continuación.

# vba
CDbl(str)

Se recomienda utilizar la función CDbl() para cambiar una cadena a un tipo de datos doble. Esta función obliga a una cadena a cambiar al tipo de datos doble.

CDbl() se usa a menudo para realizar la transformación de cadena con reconocimiento internacional a un tipo de datos doble.

En palabras simples, CDbl() comúnmente distingue separadores decimales/miles distintivos y muchas opciones de moneda que dependen de la ubicación de su computadora.

A continuación se muestra el rango entre el cual un tipo de datos doble puede contener números de coma flotante.

  • -1.79769313486231E308 a -4.94065645841247E-324 cuando los valores son negativos.
  • 4,94065645841247E-324 a 1,79769313486232E308 cuando los valores son positivos.

Aparecerá un error si nuestra cadena no se encuentra dentro de este rango. Como se muestra a continuación, veamos un ejemplo en el que establecemos newStr como argumento para convertir una cadena en doble.

# vba
Function convertToDouble(newStr As Variant)

    MsgBox (CDbl(newStr))

End Function

Sub newFunc()
convertToDouble ("1.345")
End Sub

Producción:

convertir cadena a número como doble en VBA

Convertir cadena a moneda en VBA

Con la ayuda de la siguiente declaración, puede convertir fácilmente una cadena en varios tipos de datos de moneda. La sintaxis de la función se muestra a continuación.

# vba
CCur(newStr)

Se recomienda utilizar la función CCur() para cambiar una cadena a un tipo de datos de moneda. Esta función obliga a una cadena a cambiar al tipo de datos de moneda.

CCur() se usa a menudo para realizar la transformación de cadena con reconocimiento internacional a un tipo de datos de moneda.

Significa CCur() comúnmente distingue separadores decimales/miles distintivos y muchas opciones de moneda que dependen de la ubicación de su computadora. El tipo de datos de moneda puede contener números enteros hasta 10.000.

Como resultado, una moneda puede contener 15 números a la izquierda del punto decimal y cuatro números a la derecha del punto decimal. Entonces, el rango entre el cual una moneda puede contener números es:
-922.337.203.685.477.5808 al 922.337.203.685.477.5807.

Aparecerá un error si su cadena no se encuentra dentro de este rango.

Como se muestra a continuación, veamos un ejemplo en el que establecemos newStr como argumento para convertir una cadena en una moneda.

# vba
Function convertToCurrency(newStr As Variant)

    msgBox(CCur(newStr))

End Function

Convertir cadena a decimal en VBA

Podemos usar la siguiente declaración para lograr esta conversión.

# vba
CDec(newStr)

Podemos usar la función CDec() cuando nuestro objetivo es convertir una cadena en varios tipos de datos decimales. Esta función obliga a una cadena a cambiar al subtipo de datos decimal del tipo de datos Variant.

En palabras simples, CDec() devolverá una variante cambiada al subtipo Decimal.

CDec() se usa a menudo para realizar la transformación internacional de una cadena a un tipo de datos decimal. Significa que CDec() comúnmente distingue separadores decimales/miles distintivos y muchas opciones de moneda que dependen de la ubicación de su computadora.

El tipo de datos decimal puede contener números enteros con una potencia variable de 10. La potencia denota el número de dígitos que pueden estar presentes a la derecha del punto decimal.

El rango en el que los decimales pueden contener valores se muestra a continuación.

  • Cuando la escala es 0, que no hay ningún decimal presente, el rango es de 79.228.162.514.264.337.593.543.950.335 a 79.228.162.514.264.337.593.543.950.335.
  • Cuando hay 28 decimales, los valores mayor y menor son +7.9228162514264337593543950335 y -7.9228162514264337593543950335.
  • Los valores más pequeños que no contienen valores cero son -0.00000000000000000000000000001 y 0.00000000000000000000000000001.

Como se muestra a continuación, veamos un ejemplo en el que establecemos newStr como argumento para convertir una cadena en un decimal.

# vba
Function convertToDecimal(newStr As Variant)

    msgBox(CDec(newStr))

End Function

Artículo relacionado - VBA String