Dominando la Declaración y Ámbito de Variables en VBA para PowerPoint: Guía Definitivapost-template-default single single-post postid-46 single-format-standard et_pb_button_helper_class et_fixed_nav et_show_nav et_secondary_nav_enabled et_primary_nav_dropdown_animation_fade et_secondary_nav_dropdown_animation_fade et_header_style_left et_pb_footer_columns4 et_cover_background et_pb_gutter et_pb_gutters3 et_right_sidebar et_divi_theme et-db
771 715 4434

Las variables son fundamentales en la programación VBA, permitiendo almacenar y manipular datos durante la ejecución de nuestros programas. En este tutorial, daremos un repaso al concepto mismo de variable, resaltando también algunas de las ventajas de su utilización.

¿Qué es una Variable en VBA?

Comenzamos por definir qué es una variable. Esta es un contenedor virtual polivalente que alberga valores que pueden variar, es decir, que no necesariamente tienen que ser fijos, y también las variables pueden albergar objetos.

Tenemos que decir que el contenido de una variable se almacena en la memoria RAM del ordenador. Otra cuestión es que los datos se gestionan de forma mucho más rápida en la RAM.

Tenemos que decir que si utilizamos variables, el código se hace más corto y legible.

Ventajas y Necesidad de la Declaración de Variables

Aunque en VBA, como ya sabemos, no es obligatorio dimensionar una variable, si nuestros programas son extensos y complejos, sí es muy recomendable en la mayoría de ocasiones e incluso en algunas de ellas es imprescindible. Por último, comentar que aunque en Visual Basic for Applications, las variables no son de obligada utilización, sí es cierto que es muy conveniente usarlas.

Lea también: Diferencias entre los regímenes jurídicos y fiscales de las empresas

Incluso, en algunos casos, se hacen imprescindibles, como es el caso de la utilización de las variables en bucles.

La aplicación será más eficaz si se declaran las variables explícitamente y con un tipo de datos específico.

Una vez que nos decidimos a utilizar una variable en nuestro código VBA, aunque no es obligatorio, lo ortodoxo es declararla previamente.

Tipos de Datos y su Impacto

Pero qué tipo de datos podemos introducir en una variable. Se pueden declarar variables como uno de los siguientes tipos de datos: Booleano, Byte, Entero, Long, Moneda, Single, Double, Fecha, Cadena (para cadenas de longitud variable), longitud de cadena * (para cadenas de longitud fija), Objeto o Variant.

Tenemos que recordar que además de todos los tipos de datos que podemos ver, las variables también son capaces de albergar objetos como, por ejemplo, puede ser un rango de celdas, una tabla, un gráfico, etc.

Lea también: Guía de Presentaciones Contables

Dependiendo del tipo de datos que asignemos a la variable, esta ocupará en memoria más o menos. También tenemos que tener en cuenta que dependiendo del tipo de dato utilizado, podremos albergar unos valores u otros.

Por ejemplo, el tipo Byte tan solo es capaz de albergar valores entre 0 y 255. En el otro extremo nos encontramos los tipos Double y Currency que pueden albergar decimales hasta 16 dígitos en el primero de los casos, y 15 dígitos a la izquierda de la coma decimal y cuatro dígitos a la derecha en el caso de Currency, es decir, moneda.

Por otra parte, también tenemos que señalar que el tipo de dato más pesado, por decirlo de alguna forma, es el tipo Variant. Si no se especifica un tipo de datos, el tipo de datos Variant se asigna de forma predeterminada.

Tabla de Tipos de Datos Comunes en VBA

Tipo de Dato Descripción / Rango Tamaño Aproximado
Byte Números enteros entre 0 y 255. 1 byte
Boolean Valores lógicos (True/False). 2 bytes
Integer Números enteros. 2 bytes
Long Números enteros largos. 4 bytes
Single Números de punto flotante de precisión simple. 4 bytes
Double Números de punto flotante de precisión doble, desde +/- 5E-324 hasta 1.8E308. 8 bytes
Currency Valores monetarios con 15 dígitos a la izquierda y 4 a la derecha del punto decimal. 8 bytes
Date Valores de fecha y hora. 8 bytes
String Cadenas de texto de longitud variable o fija. 10 bytes + longitud de la cadena
Object Referencia a cualquier objeto. 4 bytes
Variant Puede contener cualquier tipo de datos; el tipo más pesado. 16 bytes (números) / 22 bytes + longitud de la cadena (caracteres)

Cómo Declarar Variables

El proceso para trabajar con variables es claro: son dos fases. Primero tenemos que dimensionar o declarar esa variable y después tenemos que asignar el valor o el objeto. Vamos con el primero de los pasos, dimensionar o declarar una variable. Tenemos varios métodos.

La Instrucción Dim

Comenzamos por explicar el método extendido, esto es, utilizar una línea para cada declaración de variable. Tenemos que anteponer al nombre que elijamos como el nombre de la variable la instrucción Dim, que significa dimensionado. Así que Dim miVariable As Integer, por ejemplo, en el caso de que queramos asignar este tipo de dato.

Lea también: Plantillas gratuitas de PowerPoint para contabilidad

Al declarar variables, normalmente se utiliza una instrucción Dim. No es necesario que proporcione el tipo de datos de la variable en la instrucción de declaración. También puede usar un carácter de tipo de identificador para especificar el tipo de datos. Cuando se usan en el nivel del módulo, la instrucción Dim equivale a la instrucción Private.

Declaración Implícita vs. Explícita: La Importancia de Option Explicit

Se puede declarar una variable en Visual Basic implícitamente al utilizarla en una instrucción de asignación. Todas las variables declaradas implícitamente son del tipo Variant. Las variables de tipo Variant necesitan más recursos de memoria que la mayoría de las otras variables.

Si no desea que Visual Basic realice declaraciones implícitas, puede colocar la instrucción Option Explicit en un módulo antes de cualquier procedimiento. Esta instrucción requiere declarar explícitamente todas las variables en el módulo. Es muy importante para evitar que nuestra macro sea difícil de interpretar para otros usuarios que puedan necesitar leer el código VBA (incluso para nosotros mismos).

Puede establecer una opción en su entorno de programación Visual Basic para incluir automáticamente la instrucción Option Explicit en todos los módulos nuevos.

Declaraciones con Public, Private o Static

Puede usar la instrucción Dim o una de las demás instrucciones de declaración (Public, Private o Static) para declarar una variable.

La otra forma de definir una variable local de Procedimiento es declarar la variable como Static. Una variable local declarada con la instrucción Static sigue existiendo todo el tiempo que se ejecuta en Visual Basic.

Muy Importante!!: En nuestro procedimiento Estatica, la variable 'Acum' conserva su valor cada vez que se ejecuta. Por ejemplo, la primera vez que se ejecuta el módulo, introducimos en el cuadro el valor 10, el MsgBox mostrará el valor 10 (lógicamente)... si la siguiente vez que se ejecuta el módulo, introducimos el valor 20, el MsgBox mostrará el valor de 30 (10+20...) !!

Ámbito de las Variables en VBA

En definitiva hablaremos hoy del ámbito de las variables, es decir, dónde aplican nuestras variables una vez definidas. En VBA para Excel, los tres ámbitos existentes para las variables son: Públicas, Módulo y Procedimiento.

La forma por medio de la cual se declara una variable depende de varios factores. Uno de ellos es dónde la vamos a utilizar posteriormente (sólo en la macro actual o en otras macros).

Ámbito de Procedimiento (Local)

Cuando definimos o declaramos una variable local con la instrucción Dim, la variable permanece en memoria sólo mientras se ejecuta el procedimiento en el que la hemos declarado. Y por tanto, normalmente, cuando termina el procedimiento de ejecución, no se conservan los valores de las variables locales del procedimiento y se libera la memoria asignada a esas variables.

La próxima vez que se ejecute el procedimiento, se reinicializarán todas las variables locales declaradas. Muy importante!!: Cada variable X es independiente del otro procedimiento, sólo se reconoce la variable dentro de su propio procedimiento respectivo (Local1 ó Local2).

Puede colocar una instrucción de declaración dentro de un procedimiento para crear una variable de nivel de procedimiento. Si aparece esta declaración dentro de un procedimiento, la variable strName puede utilizarse solo en ese procedimiento.

Ámbito de Módulo

Una variable que es reconocida en todos los procedimientos en un módulo se denomina una variable de Módulo. En el ámbito de módulo, no hay ninguna diferencia entre Dim y Private.

Muy importante!!!: En un ejemplo, se pueden declarar dos variables A y B de ámbito de módulo (antes de todos los procedimientos!!), por tanto estarán disponibles para cualquiera de los procedimientos de dicho módulo.

Variables Públicas

Las variables públicas - Public - tienen el ámbito más amplio de todas las variables. Una variable pública se declara igual que una variable de ámbito de módulo, es decir, en la parte superior del módulo, encima de la primera definición de procedimiento. NO se puede declarar una variable pública dentro de un procedimiento.

Las variables públicas pueden usarse en cualquier procedimiento del proyecto. Para declarar una variable pública, tienes que colocar tu variable en la sección de Declaraciones de tu código VBA debajo de la sentencia Option Explicit, fuera de cualquiera de tus subprocedimientos o funciones y también tienes que usar la palabra clave Public. Cuando declaras una variable como pública, también estás infiriendo el alcance de esa variable.

Declaración de Variables de Objeto

Hasta ahora, las variables a las que nos hemos referido albergan valores (de un tipo u otro, pero valores), pero también las variables pueden representar a objetos, como por ejemplo, celdas, hojas, etc.

Una variable que hace referencia a un objeto debe ser Variant, Object o un tipo específico de objeto. Puede tratar una variable de objeto exactamente de la misma manera que el objeto al que hace referencia.

Declaración de Tipo Específico vs. Object Genérico

Puede declarar una variable de objeto con el tipo de datos Object cuando el tipo de objeto específico no se conoce hasta que se ejecuta el procedimiento. Si conoce el tipo de objeto específico, debe declarar la variable de objeto como ese tipo de objeto.

  • Dim MyObject As Object ' Declarado como objeto genérico.
  • Dim MyObject As Sample ' Declarado solo como objeto Sample.
  • Dim MyObject As Variant ' Declarar MyObject como tipo de datos Variant.
  • Dim MyObject As Font ' Declarar MyObject como tipo Font.

Asignación de Objetos: La Instrucción Set

Use la instrucción Set para asignar un objeto a una variable de objeto. Puede asignar una expresión de objeto o Nothing.

  • Set MyObject = YourObject ' Asignar referencia de objeto.
  • Set MyObject = Nothing ' Discontinuar asociación.

La configuración de una variable de objeto igual a Nothing interrumpe la asociación de la variable de objeto con cualquier objeto específico. Esto evita que cambie de manera accidental el objeto cambiando la variable. Una variable de objeto siempre se establece en Nothing después de cerrar el objeto asociado para que pueda probar si la variable de objeto apunta a un objeto válido.

La Palabra Clave New

Puede combinar la declaración de una variable de objeto con la asignación de un objeto a la misma usando la palabra clave New con la instrucción Set. También puede usar la palabra clave New para crear una nueva instancia de un objeto automáticamente.

La Palabra Clave Me

Use la palabra clave Me para hacer referencia a la instancia actual del objeto donde se ejecuta el código. Todos los procedimientos asociados al objeto actual tienen acceso al objeto de referencia como Me. El uso de Me es particularmente útil para pasar información acerca de la instancia actual de un objeto a un procedimiento en otro módulo.

Trabajando con Objetos de Otras Aplicaciones

Al usar una aplicación para controlar los objetos de otra, debe establecer una referencia a la biblioteca de tipos de la otra aplicación. Cuando se establece una referencia, se pueden declarar variables de objeto según el tipo más específico.

Si usa otra aplicación para controlar los objetos de Microsoft Access, en la mayoría de los casos se pueden declarar variables de objeto según el tipo más específico. Sin embargo, puede que tenga que indicar que se trata de un objeto de Microsoft Access. Por ejemplo, al declarar una variable de objeto para representar un formulario de Access dentro de Visual Basic, debe distinguir el objeto Formulario de Access de un objeto Formulario de Visual Basic.

Algunas aplicaciones no reconocen los tipos de objeto individuales de Access. Incluso si configura una referencia a la biblioteca de tipos de Access desde estas aplicaciones, debe declarar todas las variables de objeto de Access como tipo Object. El siguiente ejemplo muestra cómo declarar una variable para representar una instancia del objeto Aplicación de Access desde una aplicación que no reconoce los tipos de objeto de Access.

tags: #PowerPoint #VBA #declaración #de #variables