El ámbito de las variables es el alcance de una variable, es decir, nos permite identificar zonas o áreas desde las cuales se puede o no emplear una variable.
Cabe precisar que todas las variables, constantes, subrutinas y funciones también tienen un "ámbito", que se refiere al área en la que una aplicación puede acceder a una variable, constante, subrutina o función.
Cada lenguaje de programación determina qué comprende cada zona o ámbito para sus variables, por ejemplo:
En C++ los ámbitos de las variables son: Global (de programa), Local (de función), de Bloque.
En Java los ámbitos son: Miembro (a nivel de Clase), Locales (a nivel de método), Bucle (a nivel de Bloque).
En el caso de VBA (Visual Basic para Aplicaciones), los ámbitos de las variables son:
(1) Procedimiento
(2) Módulo
(3) Proyecto
Ámbito a Nivel de Procedimiento
En el ejemplo mostrado (en la imagen superior):
Sub test()
X = Range("a1")
Z = X + variable2
End Sub
Tanto la variable X como la variable Z son variables a nivel de procedimiento, pues se encuentran disponibles desde la macro test, y solo desde podrán ser empleadas desde ese macro.
Ámbito a Nivel de Módulo
Las variables con ámbito a nivel de módulo pueden utilizarse (acceder) desde cualquier subrutina o función que esté en el mismo módulo donde la variable ha sido declarada.
La creación de las variables a nivel de módulo se debe realizar al inicio de un módulo, es decir antes de cualquier subrutina o función, como en este ejemplo:
Dim Variable2 As String
Esta declaración permite que la variable2 se encuentre disponible en todo el módulo (ver recuadro 2 de la imagen), por ello por ejemplo en la macro test se puede hacer uso de esta variable.
Ámbito a Nivel de Proyecto
Las variables que tienen ámbito a nivel de proyecto puede utilizarse desde cualquier módulo dentro del proyecto donde haya sido declarada, pues mantiene su valor, para efectos del ejemplo mostrado en la imagen, son todos los elementos del recuadro 3.
Para declarar una variable con ámbito a nivel de proyecto se usa la palabra reservada Public, al igual que las variables con ámbito a nivel del módulo, la declaración debe estar al inicio de un módulo.
En el ejemplo:
public variable3 as string
La variable variable3 es una variable que tiene como ámbito el proyecto.