Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
como se usan las variables en VBA, ¿Qúe son y como se usan las variables en VBA?

¿Qúe son y como se usan las variables en VBA?

| 18 comentarios

Variables en VBA

Una variable se utiliza para guardar información temporal la cual será utilizada dentro de un procedimiento, módulo o libro. Antes de entrar en detalle de las variables, hay algunas reglas importantes que usted debe conocer.

1) El nombre de una variable debe comenzar con una letra y no un número. Los números pueden         ser incluidos en el nombre, pero no como el primer carácter.
2) El nombre de una variable puede tener más de 250 caracteres.
3) El nombre de una variable no puede ser la misma que cualquiera de las palabras clave de Excel, esto quiere decir que no se puede nombrar una variable con nombres tales como hojas, etc.
4) Todas las variables deben consistir en una cadena continua de sólo caracteres. Puede separar las palabras, ya sea con mayúsculas en la primera letra de cada palabra, o mediante el uso de los caracteres de subrayado.

 Puede nombrar las variables con cualquier nombre válido, por ejemplo usted podría nombrar una variable "Benjamín" y declararla como Entero u otro tipo de dato, sin embargo, es una buena práctica el uso de convenciones de nomenclatura, de esta manera sabremos a simple vista que tipo de dato es nuestra variable.

Por ejemplo con sólo leer la variable bIsOpen nos da una idea de para qué sirve, en este caso la "b" se refiere a Boolean y el "IsOpen" me recuerda que estoy comprobando si algo está abierto.

Las variables pueden ser declaradas como cualquiera de los siguientes tipos de datos:

Byte
Un tipo de datos se utiliza para mantener números enteros positivos que van de 0 a 255. Las variables byte se almacenan como números de 8 bits (1 byte).

Boolean (lógico)
Un tipo de datos con sólo dos valores posibles, True (-1) o falso (0). Las variables booleanas se almacenan como números de 16 bits (2 bytes).

Integer (entero)
Un tipo de datos que contiene variables enteras almacenadas como números enteros, tiene un espacio de 2 bytes en el rango de -32.768 a 32.767. El tipo de datos Integer también se utiliza para representar valores enumerados. El signo de porcentaje (%) representa un Integer en Visual Basic.

Long (entero largo)
Tiene un espacio por variable de 4 bytes en la memoria que representa al doble de la capacidad de un entero y cuyo valor oscila entre -2.147.483.648 y 2.147.483.647. El signo de ampersand (&) representa un largo en Visual Basic.

Currency (moneda)
Hace referencia a un valor decimal de tipo dinero, su valor oscila entre -922.337.203.685.477,5808 a 922.337.203.685.477,5807, ocupando 8 bytes en la memoria. Utilice este tipo de datos para cálculos monetarios y en cálculos de punto fijo donde la precisión es particularmente importante. El signo de arroba (@) representa un currency en Visual Basic.

 Single (simple precisión)
Hace referencia a todos los valores numéricos enteros y decimales ocupando un espacio en la memoria de 4 bytes, y cuyo valor oscila entre -3.402823E+38 a -1,401298E-45 para valores negativos, y entre 1,401298E-45 hasta 3,402823E+38 para valores positivos. El signo de exclamación (!) representa un single en Visual Basic.

Double (doble precisión)

Hace referencia a los valores numéricos enteros largos, de simple precisión y decimales periódicos, ocupa 8 bytes en la memoria en el rango -1.79769313486232E+308 a -4,94065645841247E-324 para valores negativos; 4,94065645841247E-324 a 1.79769313486232E+308 para valores positivos. El signo de número (#) representa un dato doble en Visual Basic.

Date (Fecha)
Un tipo de datos utilizado para almacenar fechas y horas como un número real. Las variables de fecha se almacenan como números de 64 bits (8 bytes). El intervalo de valores va desde 0:00:00 (medianoche) del 01 de enero del año 100 a 11:59:59 p.m. del 31 de diciembre de 9999.

String (cadena)
Un tipo de datos que consiste en una secuencia de caracteres. Una cadena puede incluir letras, números, espacios y signos de puntuación. El tipo de datos String tiene una capacidad de  aproximadamente 2 billones de caracteres y ocupa un espacio de 10 bytes + espacio de la cadena.  El signo de dólar ($) representa una cadena en Visual Basic.

Object (objeto)
Un tipo de datos que representa una referencia de objeto. Las variables de objeto se almacenan ocupando un espacio de 4 bytes.

Variant (variante)
Es el único de todos los tipos de datos que permite almacenar cualquier tipo de valor, puede contener datos numéricos, de cadena o de fecha, así como los valores especiales Empty y Null. El tipo de datos Variant tiene un tamaño de almacenamiento numérico de 16 bytes y puede contener datos hasta el rango de un decimal, o un tamaño de almacenamiento de caracteres de 22 bytes (más longitud de la cadena), y puede almacenar cualquier texto o carácter. La función VarType define cómo se tratan los datos en un Variant. Todas las variables se convierten en tipos de datos Variant si no se declara explícitamente como otro tipo de datos.

 

Alcance de una variable:

Se refiere hasta dónde puede llegar el ámbito de una variable.

DIM: Se utiliza a nivel de procedimiento y a nivel de formulario, cada vez que se utiliza el procedimiento VBA borra el contenido de la variable.

STATIC: Utilizado sólo a nivel de procedimiento, cuando una variable se declara conserva su valor entre llamadas.

PUBLIC: Tiene un ámbito a nivel de toda la aplicación.

PRIVATE: Su alcance es sólo a nivel del módulo donde se declaró.

 

Uso de la variables

Si bien en Excel es posible omitir el uso de variables, es mala práctica en programación no usarlas ya que su uso hará más eficiente el código que creemos;

Usemos un ejemplo para poner de relieve lo anterior:

En el siguiente ejemplo apreciamos una estructura sin el uso de variables, pues bien queremos convertir una longitud de metros a pies, siendo:

Imagen0001 300x259, ¿Qúe son y como se usan las variables en VBA?

Public Sub pies ()

Range ("b2").Value = Range ("b1").Value * 100 / 2.54 / 12

Range ("b2").Value = Round (Range ("b2"), 3)

End Sub

Este código se muestra a simple vista bastante tedioso e inadecuado

Ahora vamos a usar variables para el mismo ejemplo y veremos la diferencia…

Public Function fpies (longitud) As Double

 'Paso1: Declaración de las variables

Dim cm As Double, pulgadas As Double, pies As Double

 'Paso2:Aplicando las conversiones mediante la asignación de valores.

cm = longitud * 100

Pulgadas = cm / 2.54

Pies = pulgadas / 12

 'Paso3:Asignando la respuesta a la función fpies

fpies = Round (pies, 3)

End Function

 Como paso 1 procedemos  a declarar las variables, en este caso hemos usado un DIM, cuyo ámbito es a nivel de procedimiento seguido del nombre de la variable, luego as (como) y finalmente el tipo, (doble) en este caso.

El valor por defecto para cualquier tipo de variable numérica es cero.
El valor por defecto para cualquier variable de tipo cadena es "" (texto vacío).
El valor predeterminado para un tipo de variable de objeto es Nothing.

Cabe precisar que si está utilizando una variable que no ha sido declarada Excel (por defecto) se almacenará como el tipo de datos Variant ya que es el valor predeterminado de una variable.

En el paso 2 se le asigna valores a cada variable, para ello utilizamos el signo "=", asi pues a “cm” se le asignó el valor “longitud * 100”, a “Pulgadas” el valor de” cm / 2.54”, incluyendo la variable “cm” dentro del valor de la variable “Pulgadas”.

Utilizando variables se hace más sencillo realizar este ejercicio de conversión además de ser más entendible y ordenado.

 

Por Ultimo:

Cada vez que declaramos le damos un valor a una variable como por ejemplo

Dim IsMyName as Integer

cOuNtEr= aLfa*2

Y luego escribimos la misma variable pero por ejemplo todo con minúsculas Excel convertirá automáticamente ismyname a IsMyName o sea tal igual como se declaró, lo mismo pasaría con

cOuNtEr y aLfa, por ello es recomendable escribir todo el código en minúsculas sin tener que preocuparnos por la Ortografía en este aspecto.

18 comentarios

Deja una respuesta

Los campos requeridos estan marcados con *.