miércoles, 1 de diciembre de 2021

Conversiones implícitas entre tipos de variables en VBA para Microsoft Excel

Las conversiones implícitas son aquellas que realiza el propio lenguaje de programación al tratar un dato como si fuese otro tipo de variable.

Desde mi punto de vista resultan muy peligrosas si no tenemos claro que está sucediendo, aunque en ocasiones puede ser la forma más rápida de realizar alguna acción.

Un caso típico es almacenar un número decimal dentro de una variable entera.

Como ejemplo esta macro.


En está macro asignamos el valor 5,8 primero a una variable decimal y luego a una entera, y las mostramos.

El código es el siguiente.


Sub variables()

    Dim numeroEntero As Integer

    Dim numeroDecimal As Simple

   

    'almacenamos un valor decimal

    numeroDecimal = 5.8

    

    'lo mostramos

    MsgBox (numeroDecimal)

    

    'asignamos el valor decimal a una variable entera

    numeroEntero = 5.8

    'lo mostramos

    MsgBox (numeroEntero)


End Sub


Esto provoca la alteración de la parte decimal del valor, dependiendo del lenguaje de programación, puede ser truncada, o redondeada como en el caso de VBA.

Si esta asignación se hace en medio de un código y el resultado se almacena nuevamente en una variable decimal, puede pasar desapercibido, y resultar realmente complejo encontrar la fuente del problema.

En el primer caso de muestra el valor inicial asignado a la variable.

En el segundo vemos que el valor se ha redondeado al entero más cercano.

Si non somos conscientes de estas conversiones, pueden llegar a ser un verdadero dolor de cabeza.

No hay comentarios:

Publicar un comentario