Ámbito de una variable en VBA Excel. Dónde utilizarlas

Además de definir el tipo de dato que contendrá una variable a la hora de declararla, también puedes establecer dónde cumplirá su función, es decir, en qué parte del proyecto es posible utilizarla. Esto es el ámbito de una variable.

  • Nivel de procedimiento: Sólo se podrá utilizar dentro del procedimiento donde se declara, siendo imposible hacer referencia a la variable desde otro lugar.
  • Nivel de módulo: Es posible hacer referencia a la variable dentro del módulo donde se declara. Si intentas hacerlo desde otro módulo, obtendrás un error.
  • Nivel de proyecto: Puedes utilizar la variable desde cualquier parte del proyecto donde esté declarada.

Te muestro estos niveles en detalle:

Ámbito de una variable a nivel de procedimiento

Como he mencionado, las variables de nivel de procedimiento sólo estarán disponibles en el procedimiento donde se declaran o donde se utilizan por primera vez. Fuera de este procedimiento, las variables no existirán (literalmente).

Cuando declaras una variable en un procedimiento, únicamente el código de dicho procedimiento puede tener acceso o modificar esa variable. Al finalizar el procedimiento, la variable se destruye.

ambito de una variable local excel vba

Las variables de procedimiento, llamadas también locales, se declaran mediante las instrucciones Dim, Static o Private.

Al declarar una variable con la instrucción Dim, solamente existirá mientras el procedimiento está en ejecución, es decir, que se reinicia cuando finaliza. En cambio, los valores de las variables declaradas con Static conservan sus valores siempre que se ejecuta el procedimiento.

Observa estos dos procedimientos:

Sub ejemplo_1()
Dim x
x = x + 1
MsgBox x
End Sub
Sub ejemplo_2()
Static x
x = x + 1
MsgBox x
End Sub

La diferencia entre los dos se encuentra cada vez que se ejecutan. Cuando se ejecuta el procedimiento ejemplo_1, mostrará el valor 1 todas las veces que lo hagas, ya que la variable x se reinicia a 0 cada vez que finaliza el código. En cambio, cada vez que ejecutas ejemplo_2, el valor de x se incrementará en 1, dado que la variable conserva su valor al finalizar el código.

Ámbito de una variable a nivel de módulo

Las variables de nivel de módulo Se crean con una declaración Dim o Private en la sección de declaraciones generales del módulo, es decir, al principio del todo y fuera de cualquier procedimiento. Como su nombre indica, están disponibles para todos los procedimientos del módulo.

ambito de una variable de modulo excel vba

Ámbito de una variable a nivel de proyecto

Las variables de nivel de proyecto se crean con una declaración Public en la parte superior de cualquier módulo, fuera de cualquier procedimiento. Estas variables estarán disponibles en todos los procedimientos del proyecto, se encuentren en el mismo módulo donde se ha declarado o en cualquier otro. La variable contendrá los valores hasta que se cierre el proyecto.

ambito de una variable publica vba excel

Resumiendo…

Aunque no es necesario declarar las variables en Excel, te aconsejo que lo hagas siempre para evitar estar buscado los posibles errores que obtengas.

Antes de declarar una variable debes pensar dónde y en qué situación vas a hacer uso de ella, de forma que evites modificaciones inesperadas y accesos no autorizados.

Respuestas

  1. Didactica toda la presentacion de su trabajo y bien estructurado en forma comprensiva hasta para principiantes. Los ejemplos practicos comienzan por sencillos y luego complejos pero entendibles al ponerlos en practica. Ahondar en la profundidad de VBA, funciones convendria a futuro. Gracias

Los comentarios están cerrados.