Información sobre ámbito y visibilidad
El ámbito hace referencia a la disponibilidad de una variable, de una constante o de un procedimiento para que lo use otro procedimiento. Existen tres niveles de ámbito: nivel de procedimiento, nivel de módulo privado y 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 ejemplo siguiente, la variable strMsg
de cadena 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 crea un procedimiento de eventos, se inserta automáticamente la palabra clave Private antes de la declaración del procedimiento. Para todos los demás procedimientos, debe declarar explícitamente el procedimiento con la palabra clave Private si no quiere que sea público.
Use procedimientos públicos, variables y constantes definidos en módulos estándar o módulos de clase para hacer referencia a proyectos. Sin embargo, primero debe establecer una referencia al proyecto en el que se han definido.
Los procedimientos públicos, las variables y las constantes definidos en otros 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.