Información sobre ámbito y visibilidad

El ámbito hace referencia a la disponibilidad de una variable, de una constante o de unprocedimiento para que lo use otro procedimiento. Hay tres niveles de ámbito: nivel de procedimiento,nivel de módulo privadoy nivel de módulo público.

Se determina el ámbito de una variable cuando la declara. Es buena idea declarar todas las variables explícitamente para evitar errores de conflicto de nombre entre variables con diferentes ámbitos.

Ámbito de nivel de procedimiento

Una variable o constante definida en un procedimiento no es visible fuera de ese procedimiento. Solo el procedimiento que contiene la declaración de variable puede usarla. En el siguiente ejemplo, el primer procedimiento muestra un cuadro de mensaje que contiene una cadena. El segundo procedimiento muestra un cuadro de mensaje en blanco porque la variable es local para el primer procedimiento.

Sub LocalVariable() 
 Dim strMsg As String 
 strMsg = "This variable can't be used outside this procedure." 
 MsgBox strMsg 
End Sub 
 
Sub OutsideScope() 
 MsgBox strMsg 
End Sub

Ámbito de nivel de módulo privado

Puede definir variables de nivel de módulo y constantes en la sección Declaraciones de un módulo. Las variables del nivel de módulo pueden ser públicas o privadas. Las variables públicas están disponibles para todos los procedimientos en todos los módulos de un proyecto; las variables privadas se encuentran disponibles solo para los procedimientos en ese módulo. De forma predeterminada, las variables declaradas con la instrucción Dim de la sección Declaraciones tienen el ámbito privado. Sin embargo, si a la variable le precede la palabra clave Private, el ámbito es evidente en el código.

En el siguiente ejemplo, la variable de cadena strMsg está disponible para los procedimientos definidos en el módulo. Cuando se llama al segundo procedimiento, muestra el contenido de la variable de cadena strMsg en un cuadro de diálogo.

' Add following to Declarations section of module. 
Private strMsg As String 
 
Sub InitializePrivateVariable() 
 strMsg = "This variable can't be used outside this module." 
End Sub 
 
Sub UsePrivateVariable() 
 MsgBox strMsg 
End Sub

Nota

Los procedimientos públicos en un módulo estándar o módulo de clase se encuentran disponibles para cualquier proyecto de referencia. Para limitar el ámbito de todos los procedimientos de un módulo al proyecto actual, agregue una instrucción Option Private Module a la sección Declaraciones del módulo. Los procedimientos y variables públicos seguirán estando disponibles para otros procedimientos en el proyecto actual, pero no para los proyectos de referencia.

Ámbito de nivel de módulo público

Si declara una variable de nivel de módulo como pública, se encontrará disponible para todos los procedimientos del proyecto. En el siguiente ejemplo, cualquier procedimiento puede usar la variable de cadena en cualquier módulo del proyecto.

' Include in Declarations section of module. 
Public strMsg As String 

Todos los procedimientos son públicos de forma predeterminada, excepto los procedimientos de eventos. Cuando Visual Basic un procedimiento de evento, la palabra clave Private se inserta automáticamente antes de la declaración del procedimiento. En los demás procedimientos, debe declarar explícitamente el procedimiento con la palabra clave Private si no quiere que sea público.

Puede usar constantes, variables y procedimientos públicos definidos en los módulos estándar o módulos de clase de los proyectos de referencia. Sin embargo, primero debe establecer una referencia al proyecto en el que se han definido.

Los procedimientos públicos, las variables y las constantes definidas en distintos módulos estándar o de clase, como módulos de formulario o módulos de informe, no están disponibles para hacer referencia a proyectos, ya que estos módulos son privados para el proyecto en el que residen.

Vea también

Soporte técnico y comentarios

¿Tiene preguntas o comentarios sobre VBA para Office o esta documentación? Vea Soporte técnico y comentarios sobre VBA para Office para obtener ayuda sobre las formas en las que puede recibir soporte técnico y enviar comentarios.