Excel VBA Public Variable

La variable es una parte importante de la vida de los programadores. Cada vez que un programador codifica, crea un conjunto de variables. Una variable puede considerarse como un cupón que utilizamos con frecuencia en sitios de compras en línea como Flipkart, Amazon, etc. ese cupón le permite tener un cierto descuento en ciertos productos predefinidos. Igual es el caso con una variable. Una variable puede definirse gramaticalmente como un marcador de posición que reserva algo de memoria en el sistema con cierto nombre. Ese espacio de memoria se puede utilizar en cualquier momento con el mismo nombre.

Una variable VBA se considera una variable pública en dos circunstancias. Cuando -

  • Se puede usar junto con todos los códigos dentro de un módulo.
  • Se puede utilizar junto con todos los códigos para diferentes módulos.

En términos simples, una variable se considera una variable pública cuando se puede usar en cualquier código y en cualquier módulo. En este artículo, estamos a punto de ver cómo se puede definir una variable. Cómo se puede definir públicamente dentro de VBA.

Antes de comenzar el concepto de Variable pública de VBA, debemos entender que las variables que se usan en un subprocedimiento no se pueden usar en el otro subprocedimiento (ahí es donde comenzamos a sentir la necesidad de tener una variable pública que se puede usar en cualquier módulo, cualquier subprocedimiento).

Supongamos que creamos un subprocedimiento en un VBA y definimos una nueva variable allí usando la instrucción Dim.

En este código, var1 es la variable definida en el subprocedimiento Ex_Var .

Ahora, definiré un nuevo subprocedimiento y la ironía es que no puedo usar var1 previamente definido en este subprocedimiento. Vea la captura de pantalla a continuación, donde estoy tratando de asignar el valor 10 a var1 en diferentes subprocedimientos. Vea también el mensaje de error después de ejecutar el código.

Al declarar las variables bajo los subprocedimientos, restringimos su uso solo por ese subprocedimiento. Es un gran inconveniente declarar una variable dentro de un subprocedimiento.

Esto lleva a la nueva teoría, que incluye la declaración de variables fuera de los subprocedimientos. Esto ayudará al programador a utilizar ampliamente las variables definidas con diferentes subprocedimientos.

¿Cómo declarar variables públicas en VBA?

Veamos algunos ejemplos para declarar variables públicas en VBA.

Puede descargar esta plantilla de Excel de variables públicas de VBA aquí - Plantilla de Excel de variables públicas de VBA

Ejemplo # 1 - Definición de una variable públicamente dentro de un módulo

Supongamos que queremos definir una variable a la que se pueda acceder públicamente a través de todos los códigos dentro de un solo módulo. Podemos hacerlo. Siga los pasos a continuación:

Paso 1: Abra su Editor de Visual Basic (VBE) presionando Alt + F11 o haciendo clic en el botón de Visual Basic en la pestaña Desarrolladores en Excel. Seleccione la pestaña Insertar, navegue hasta Módulos y haga clic en él. Agregará un nuevo módulo dentro del VBE para trabajar.

Paso 2: dentro del módulo recién creado, agregue el comando Option Explicit al comienzo de su código VBA (antes de crear cualquier variable). La opción explícita le ayuda si hay algún error tipográfico mientras usa la variable definida. Si la variable utilizada no está definida en el sistema, esta opción arroja un mensaje de error que dice que la variable no está definida.

Código:

 Opción explícita 

Paso 3: use una instrucción Dim para crear una nueva variable llamada my_name con el tipo de datos como String.

Código:

 Opción explícita Dim my_name As String 

Si pudieras prestar atención, hemos definido esta variable explícitamente. Es decir, no forma parte de un subprocedimiento específico. Lo que automáticamente hace que esta variable esté disponible para todos los códigos dentro del módulo creado (Módulo 1). Esto se llama como definir una variable públicamente dentro de un módulo. Esta variable se puede usar en cualquier lugar de los múltiples subprocedimientos dentro del mismo módulo.

Supongamos que con el código que figura a continuación, he asignado un valor a la variable my_name como "Lalit Salunkhe".

Código:

 Opción explícita Dim my_name As String Sub Ex_1 () my_name = "Lalit Salunkhe" MsgBox "Mi nombre es:" & my_name End Sub 

Si ejecuto este código, veré un cuadro de mensaje como se muestra en la siguiente captura de pantalla:

También podemos usar esta variable en diferentes subprocesos dentro del mismo módulo. Vea la captura de pantalla a continuación:

Código:

 Opción Explícito Dim my_name As String Sub Ex_1 () my_name = "Lalit Salunkhe" MsgBox "Mi nombre es:" & my_name End Sub Sub Ex_2 () Dim my_age As Integer my_name = "Lalit Salunkhe" my_age = 28 MsgBox "Mi nombre es: "& my_name &"; Mi edad es: "& my_age End Sub 

Ver el subproceso Ex_2. Tiene una nueva variable definida my_age. He usado my_name para agregar mi nombre y my_age para agregar mi edad actual. Puede ver que my_name todavía es accesible dentro del segundo subprocedimiento. Una vez que ejecuto este código, podemos obtener la salida como un cuadro de mensaje que se muestra a continuación:

Así es como podemos definir una variable públicamente dentro de un módulo.

Ejemplo # 2 - Definir una variable públicamente en todos los módulos

Para lograr esta hazaña, debe usar las palabras clave como Public o Global en lugar de Dim, que establece la variable como pública para todo el módulo donde sea que trabaje.

Paso 1: crea un nuevo módulo. Vaya a la pestaña Insertar, haga clic en Módulo para agregar un nuevo módulo en VBE.

Paso 2: Agregar opción explícita dentro del módulo.

Código:

 Opción explícita 

Paso 3: defina una nueva variable denominada var1 y var2 como un tipo entero. Pero esta vez usando la declaración pública en lugar de Dim (que usamos anteriormente).

Código:

 Opción explícita Public var1 As Integer Public var2 As Integer 

Paso 4: Ahora, estas dos variables se pueden usar en varios módulos si se crean bajo el mismo VBE. Vea el ejemplo dado a continuación:

Código:

 Opción explícita Public var1 As Integer Public var2 As Integer Sub Ex_3 () var1 = 10 var2 = 100 MsgBox "El valor para var1 es:" & var1 & Chr (13) & "El valor para var2 es:" & var2 End Sub 

Hemos asignado los valores a ambas variables usando una función MsgBox, tratando de mostrar valores para esas dos variables.

Paso 5: Ejecute el código presionando la tecla F5 o haciendo clic en el botón Reproducir, puede ver una salida como se muestra a continuación:

Paso 6: Utilizaremos las mismas variables en el Módulo 1 que hemos usado en el primer ejemplo e intentaremos averiguar si las variables son accesibles allí o no.

Código:

 Opción Explícito Dim my_name As String Sub Ex_1 () my_name = "Lalit Salunkhe" MsgBox "Mi nombre es:" & my_name End Sub Sub Ex_2 () Dim my_age As Integer my_name = "Lalit Salunkhe" my_age = 28 MsgBox "Mi nombre es: "& my_name &"; Mi edad es: "& my_age End Sub Sub Ex_public () var1 = 1000 var2 = 999 MsgBox" El valor para var1 es: "& var1 & Chr (13) &" El valor para var2 es: "& var2 End Sub 

Si puede ver la captura de pantalla anterior, hemos utilizado el mismo conjunto de variables definidas en el Módulo 2 y tenemos valores como 1000 y 999 respectivamente. Estamos utilizando la función MsgBox para presentar los valores de estas dos variables respectivamente. Ejecute el código y podrá ver la salida como se muestra a continuación:

Así es como una variable se puede usar públicamente dentro del módulo y entre los módulos.

Cosas para recordar

  • Siempre se prefiere definir las variables explícitamente en VBA. Para que no se limiten al subprocedimiento en el que se definen.
  • Puede asignar una variable pública de dos maneras: una dentro de un módulo usando la declaración Dim convencional y la segunda en todos los módulos presentes en VBE usando la declaración Public o Global.

Artículos recomendados

Esta es una guía de VBA Public Variable. Aquí discutimos cómo declarar Variable pública en Excel usando el código VBA en Excel junto con ejemplos prácticos y una plantilla de Excel descargable. También puede consultar nuestros otros artículos sugeridos:

  1. Variables globales de VBA
  2. Una tabla de datos variables en Excel
  3. VBA FileSystemObject (FSO)
  4. Dos tablas de datos variables en Excel

Categoría: