Sub (Instrucción)

Visual Basic VBLR

Sub (Instrucción)

       

Declara el nombre, los argumentos, y el código que componen el cuerpo de un procedimiento Sub.

Sintaxis

[Private | Public | Friend] [Static] Sub nombre [(lista_argumentos)]
[instrucciones]
[Exit Sub]
[instrucciones]

End Sub

La sintaxis de la instrucción Sub consta de las siguientes partes:

Parte Descripción
Public Opcional. Indica que el procedimiento Sub es accesible para todos los demás procedimientos de todos los módulos. Si se usa en un módulo que contiene una instrucción Option Private, el procedimiento no está disponible fuera del proyecto.
Private Opcional. Indica que el procedimiento Sub es accesible sólo para otros procedimientos del módulo en el que se declara.
Friend Opcional. Se utiliza solamente en un módulo de clase. Indica que el procedimiento Sub es visible a través del proyecto, pero no por un controlador de una instancia de un objeto.
Static Opcional. Indica que las variables locales del procedimiento Sub se conservan entre distintas llamadas. El atributo Static no afecta a las variables que se declaran fuera de Sub, incluso aunque se usen en el procedimiento.
nombre Requerido. Nombre del procedimiento Sub; sigue las convenciones estándar de nombres de variable.
lista_
argumentos
Opcional. Lista de variables que representan los argumentos que se pasan al procedimiento Sub cuando se le llama. Las distintas variables se separan mediante comas.
instrucciones Opcional. Cualquier grupo de instrucciones que se ejecutan dentro del procedimiento Sub.

El argumento lista_argumentos consta de las siguientes partes y sintaxis:

[Optional] [ByVal | ByRef] [ParamArray] nombre_variable[( )] [As tipo] [= valor_predeterminado]

Parte Descripción
Optional Opcional. Palabra clave que indica que no se requiere ningún argumento. Si se usa, todos los argumentos subsiguientes de lista_argumentos también deben ser opcionales y declararse mediante la palabra clave Optional. Optional no se puede utilizar para ningún argumento si se usa ParamArray.
ByVal Opcional. Indica que el argumento se pasa por valor.
ByRef Opcional. Indica que el argumento se pasa por referencia. ByRef es el modo predeterminado en Visual Basic.
ParamArray Opcional. Sólo se utiliza como el último argumento de lista_argumentos para indicar que el argumento final es una matriz Optional de elementos tipo Variant. La palabra clave ParamArray le permite proporcionar un número arbitrario de argumentos. No se puede utilizar con ByVal, ByRef u Optional.
nombre_
variable
Requerido. Nombre de la variable que representa el argumento; sigue las convenciones estándar de nombres de variables.
tipo Opcional. El tipo de datos del argumento que se pasa al procedimiento; puede ser Byte, Boolean, Integer, Long, Currency, Single, Double, Decimal (no admitido actualmente), Date, String (solamente longitud variable), Object, Variant, o un tipo de objeto específico. Si el parámetro no es Optional, se puede especificar también un tipo definido por el usuario.
valor_
predeterminado
Opcional. Cualquier constante o expresión de constante. Sólo es válido para parámetros Optional. Si el tipo es Object, un valor predeterminado explícito sólo puede ser Nothing.

Comentarios

Si no se especifica explícitamente mediante Public, Private o Friend, los procedimientos Sub son públicos de manera predeterminada. Si no se usa Static, el valor de las variables locales no se mantiene entre distintas llamadas. La palabra clave Friend solamente se puede usar en módulos de clase. Sin embargo, los procedimientos en cualquier módulo de un proyecto pueden acceder a los procedimientos Friend. Un procedimiento Friend no aparece en la biblioteca de tipo de su clase primaria, ni se puede enlazar posteriormente.

Precaución   Los procedimientos Sub pueden ser recursivos; es decir, se pueden llamar a sí mismos para realizar una tarea determinada. Sin embargo, esto puede llevar al desbordamiento de la pila. La palabra clave Static generalmente no se utiliza con procedimientos recursivos Sub.

Todo código ejecutable debe estar en procedimientos. No puede definir un procedimiento Sub dentro de otro procedimiento Sub, Function o Property.

Las palabras clave Exit Sub causan la inmediata salida de un procedimiento Sub. La ejecución del programa continúa con la instrucción que sigue a la instrucción que llamó el procedimiento Sub. Cualquier número de instrucciones Exit Sub puede aparecer en cualquier lugar de un procedimiento Sub.

Al igual que un procedimiento Function, un procedimiento Sub es un procedimiento distinto que toma argumentos, lleva a cabo una serie de instrucciones y cambia el valor de sus argumentos. Sin embargo, a diferencia de un procedimiento Function, el cual devuelve un valor, un procedimiento Sub no se puede utilizar en una expresión.

Para llamar a un procedimiento Sub, use el nombre del procedimiento seguido de la lista de argumentos. Consulte la instrucción Call para obtener información específica acerca de cómo llamar a los procedimientos Sub.

Las variables usadas en procedimientos Sub se dividen en dos categorías: las que están explícitamente declaradas dentro del procedimiento y las que no lo están. Las variables declaradas explícitamente en un procedimiento (mediante Dim o un equivalente) siempre son locales del procedimiento. Otras variables usadas pero no declaradas explícitamente en un procedimiento también son locales, a menos que se declaren explícitamente en algún nivel superior fuera del procedimiento.

Precaución   Un procedimiento puede usar una variable que no esté declarada explícitamente en el procedimiento, pero puede ocurrir un conflicto de nombres si cualquier cosa que ha definido en el nivel de módulo tiene el mismo nombre. Si el procedimiento se refiere a una variable no declarada que tiene el mismo nombre que otro procedimiento, constante o variable, se supone que el procedimiento se está refiriendo al nombre de ese nivel de módulo. Para evitar este tipo de conflictos, declare las variables explícitamente. Puede usar una instrucción Option Explicit para forzar la declaración explícita de variables.

Nota   No se puede usar GoSub, GoTo o Return para obtener acceso o salir de un procedimiento Sub.