Alcance variable de Excel VBA

Tabla de contenido:

Anonim

En todos los lenguajes de programación, tenemos especificadores de acceso a variables que definen desde dónde se puede acceder a una variable definida. Excel VBA no es una excepción. VBA también tiene especificadores de alcance. Estos especificadores de alcance se pueden usar para establecer la visibilidad / alcance de una variable en Excel VBA.

En Excel VBA, tenemos tres tipos de especificadores de alcance:

  1. Nivel de procedimiento
  2. Privado - Nivel de módulo
  3. Público - Nivel de proyecto

Alcance variable de nivel de procedimiento de VBA

A las variables que se declaran dentro de una subrutina, solo se puede acceder en ese procedimiento / función. Tienen un alcance a nivel de procedimiento. Por lo general, se declaran con la palabra clave Dim. Si el módulo tiene una opción implícita, es posible que la variable no se haya declarado, solo se haya utilizado directamente.

En el siguiente ejemplo, tenemos una prueba de alcance de subrutina que tiene variables xey. Cuando ejecutamos la primera subrutina, funciona perfectamente e imprime la suma de X e Y

Opción Sub scopeTest explícito () Dim x, y como entero 'Variable de nivel de procedimiento en VBA x = 2 y = 3 Debug.Print x + y End Sub Sub sum () x = 5 y = 7 Debug.Print x + y End Sub

Pero cuando ejecuta la suma de subrutinas, arroja un error de que la variable no está declarada. ¿Por qué? Debido a que X e Y son privados del procedimiento scopeTest y la subrutina sum no tiene acceso a ellos. Por lo tanto, el submarino se encuentra con un error.

Variable privada de VBA: alcance de nivel de módulo

Cuando desee declarar una variable a la que se debe acceder en todo el módulo, declare esa variable como privada en la parte superior del módulo, antes de cualquier subrutina o función.

Las variables declaradas antes de cualquier subrutina, en el módulo, son por defecto Privadas. Incluso si los declara con la palabra clave Dim. Pero para ser específico, es aconsejable utilizar la palabra clave Privada.

Los dos procedimientos siguientes se encuentran en el mismo módulo, módulo 1.

Option Explicit 'Variable de nivel de módulo en VBA. Ambas variables xey son privadas para este módulo. y 'se puede acceder desde cualquier subfunción o función dentro de este módulo. Dim x como entero Privado y como entero Sub scopeTest () 'Se puede acceder a esto desde cualquier módulo del proyecto x = 2 y = 3 Debug.Print x + y End Sub Sub suma privada () 'No se puede acceder a esto desde otros módulos x = 5 y = 7 Debug.Print x + y End Sub 

Las dos funciones anteriores se ejecutarán perfectamente bien ya que la variable xey son las variables privadas de este módulo.

Importante: Los últimos valores almacenados en xey se conservan hasta en todo el módulo. Si ejecutamos el sub scopeTest primero y no inicializamos los valores de xey en sub sum y lo ejecutamos, entonces el valor inicial de xey no cambiará.

La siguiente subrutina se define en un módulo separado, módulo 2. Cuando intento acceder a la variable desde otro módulo, el procedimiento (o función) de VBA se encuentra con un error.

Pero si trato de llamar a la subrutina suma del módulo 1 en el módulo 2, esto funciona perfectamente. Para hacer que su función y subrutinas sean privadas para el módulo, use la palabra clave Privada antes de la sub y la función.

Nota:- Las variables declaradas antes de cualquier subrutina o función, en un módulo son privadas del módulo por defecto.. Puede utilizar el Privadopalabra clave. Pero las funciones y subrutinas son públicas de forma predeterminada y cualquier módulo de un proyecto puede acceder a ellas. Para hacer que las funciones y subrutinas sean privadas para el módulo, debe usar la palabra clave Privada.

Variables públicas: alcance a nivel de proyecto

Como aprendimos en los ejemplos anteriores, la función y las subrutinas son públicas por defecto y se puede acceder a ellas desde cualquier módulo, pero las variables no lo son. Para hacer que una variable sea accesible desde cualquier módulo en Excel VBA,utilizamos palabra clave pública.

Para declarar una variable pública en un proyecto, las ha declarado en la parte superior del módulo, antes de cualquier función o subrutina con la palabra clave pública. El siguiente código está escrito en el módulo 1.

Option Explicit 'Variable de nivel de proyecto en VBA. Público x como entero Público y como entero Public Sub scopeTest () 'Se puede acceder a esto desde cualquier módulo del proyecto x = 2 y = 3 End Sub Private Sub sum ()' No se puede acceder a esto desde otros módulos x = 5 y = 7 Debug.Print x + y End Sub

Y esta subrutina está en otro módulo, el módulo 2.

Opción Explícita Sub mul () Llamada scopeTest 'Llamada suma' no funcionará ya que es privada para el módulo 1 Debug.Print x * y End Sub 

Esta vez funciona perfectamente.
Primero he llamado a la subrutina scopeTest. Dado que scopeTest es público, se llama. Inicializa los valores de xey. A continuación, multiplicamos x e y. Dado que la subrutina scopeTest la había inicializado con los valores 2 y 3, el resultado que obtenemos es 6.

Así que sí, chicos, así es como pueden usar los especificadores de alcance variable en Excel para controlar la visibilidad de variables, funciones y subrutinas en proyectos de Excel VBA.

Traté de explicar los Especificadores de acceso de VBA de la manera más simple que pude. Espero que haya sido explicativo. Si tiene alguna duda con respecto a este artículo o cualquier otra duda relacionada con VBA, pregúnteme en la sección de comentarios a continuación. Estaré feliz de contar contigo.

Argumentos ByRef y ByVal | Cuando se pasa un argumento como argumento ByRef a una función o sub diferente, se envía la referencia de la variable real. Cualquier cambio realizado en la copia de la variable se reflejará en el argumento original.

Elimine hojas sin mensajes de confirmación usando VBA en Microsoft Excel | Dado que está eliminando hojas usando VBA, sabe lo que está haciendo. Le gustaría decirle a Excel que no muestre esta advertencia y elimine la maldita hoja.

Agregar y guardar un nuevo libro de trabajo usando VBA en Microsoft Excel 2016 | En este código, primero creamos una referencia a un objeto de libro de trabajo. Y luego lo inicializamos con un nuevo objeto de libro de trabajo. El beneficio de este enfoque es que puede realizar operaciones en este nuevo libro de trabajo fácilmente. Como guardar, cerrar, borrar, etc.

Mostrar un mensaje en la barra de estado de Excel VBA La barra de estado en Excel se puede utilizar como un monitor de código. Cuando su código VBA es extenso y realiza varias tareas usando VBA, a menudo deshabilita la actualización de la pantalla para que no vea que la pantalla parpadea

Desactive los mensajes de advertencia con VBA en Microsoft Excel 2016 | Este código no solo deshabilita las alertas de VBA, sino que también aumenta la eficiencia de tiempo del código. Veamos cómo.

Articulos populares:

50 accesos directos de Excel para aumentar su productividad | Acelera tu tarea. Estos 50 accesos directos le permitirán trabajar aún más rápido en Excel.

La función BUSCARV en Excel | Esta es una de las funciones más utilizadas y populares de Excel que se utiliza para buscar valores de diferentes rangos y hojas.

CONTAR.SI en Excel 2016 | Cuente valores con condiciones usando esta asombrosa función. No necesita filtrar sus datos para contar un valor específico. La función Countif es esencial para preparar su tablero.

Cómo usar la función SUMIF en Excel | Esta es otra función esencial del tablero. Esto le ayuda a resumir valores en condiciones específicas.