martes, 19 de diciembre de 2017

El indiscriminado uso de las variables tipo Variant

En un artículo anterior (https://abrahamexcel.blogspot.pe/2017/11/consejos-para-el-uso-de-variables-en.html) ya comentábamos sobre los constantes problemas de la mala declaración de variables o de no declararlas y como aquello consumía recursos innecesarios.

Cuando usamos variables y no las hemos declarado VBA les asigna, automáticamente, el tipo Variant. El tipo de variables Variant admite números enteros, decimales, texto y en general cualquier tipo de dato que podamos usar, pero es justamente esa capacidad la que hace que dicho tipo de variable requiera una gran cantidad de memoria. Las variables Variant reservan 22 bytes de la memoria (en algunos casos 16 bytes) y a eso hay que sumarle lo que ocupa el valor que le asignemos a la variable.

Para entenderlo mejor tratemos de ejemplificarlo pero primero recordemos que, de modo general, un carácter cualquiera ocupa 1 byte (hay variaciones por si acaso).  Entonces veamos:

Sub Probando ()
CadenadeTexto = “Abraham” 
End Sub 

Como no se declaró la variable “CadenadeTexto”, nuestro VBA le reservo 22 bytes de la memoria y al tener siete caracteres la palabra “Abraham”, en total la variable está ocupando 29 bytes.  Pero, veamos ahora que pasaría si declarábamos la variable de forma adecuada:

Sub Probando ()
Dim CadenadeTexto As String 
Let CadenadeTexto = “Abraham"
End Sub 

En ese caso, al ser del tipo String, se le reservó 10 bytes, a eso le sumamos los siete que ocupa la palabra y tenemos en total que nuestra variable ocupó 17 bytes, bastante menos que los 29 bytes que ocupó como tipo Variant.

¿Por eso deberíamos dejar de usar variables del tipo Variant? No necesariamente pero no es recomendable usar siempre ese tipo de variable cuando hay varias del tipo adecuado para nuestras necesidades  (String, Double, etc.). Como bien dicen muchos programadores, las características de las actuales computadoras permiten tener varios Gigabytes de memoria que, aparentemente, no harían que se perciba problema con el uso indiscriminado de las variables tipo Variant pero, no olvides que la programación no solo debería ser eficaz, sino que también debe de ser eficiente y además, nuestras macros no será lo único que ocupe la memoria de nuestra computadora.

Para terminar, hay ocasiones en que será necesario usar las variables del tipo Variant como cuando no tengamos la certeza, por algún motivo, de qué tipo de valores usarán nuestros usuarios finales.

Abraham Valencia

No hay comentarios.:

Publicar un comentario