Sub (Instrucción, Visual Basic)

Declara el nombre, los parámetros y el código que definen un procedimiento Sub.

[ <attributelist> ] [ Partial ] [ accessmodifier ] [ proceduremodifiers ] [ Shared ] [ Shadows ] 
Sub name [ (Of typeparamlist) ] [ (parameterlist) ] [ Implements implementslist | Handles eventlist ]
    [ statements ]
    [ Exit Sub ]
    [ statements ]
End Sub

Partes

Término

Definición

attributelist

Opcional. Vea la Lista de atributos.

Partial

Opcional. Indica la definición de un método parcial. Vea Métodos parciales (Visual Basic).

accessmodifier

Opcional. Puede ser una de las siguientes:

Vea Niveles de acceso en Visual Basic.

proceduremodifiers

Opcional. Puede ser una de las siguientes:

Shared

Opcional. Vea Shared.

Shadows

Opcional. Vea Shadows.

name

Obligatorio. Nombre del procedimiento. Vea Nombres de elementos declarados (Visual Basic). Para crear un procedimiento de constructor para una clase, establezca el nombre de un procedimiento Sub en la palabra clave New. Para obtener más información, vea Duración de los objetos: cómo se crean y destruyen (Visual Basic).

typeparamlist

Opcional. Lista de parámetros de tipo para un procedimiento genérico. Vea Lista de tipos.

parameterlist

Opcional. Lista de nombres de variables locales que representan los parámetros de este procedimiento. Vea Lista de parámetros (Visual Basic).

Implements

Opcional. Indica que este procedimiento implementa uno o más procedimientos Sub, cada uno de los cuales se define en una interfaz implementada por la clase contenedora o la estructura de este procedimiento. Vea Implements (Instrucción).

implementslist

Requerido si se suministra Implements. Lista de procedimientos Sub que se están implementando.

implementedprocedure [ , implementedprocedure ... ]

Cada implementedprocedure tiene la sintaxis y las partes siguientes:

interface.definedname

ParteDescripción
interface Obligatorio.Nombre de una interfaz implementada por la clase o estructura contenedora de este procedimiento.
definedname Obligatorio.Nombre por el que está definido el procedimiento en interface.

Handles

Opcional. Indica que este procedimiento puede controlar uno o más eventos concretos. Vea Handles (Cláusula, Visual Basic).

eventlist

Requerido si se suministra Handles. Lista de eventos que este procedimiento controla.

eventspecifier [ , eventspecifier ... ]

Cada eventspecifier tiene la sintaxis y las partes siguientes:

eventvariable.event

ParteDescripción
eventvariable Obligatorio.Variable de objeto declarada con el tipo de datos de la clase o estructura que provoca el evento.
event Obligatorio.Nombre del evento que controla este procedimiento.

statements

Opcional. Bloque de instrucciones que se ejecuta dentro de este procedimiento.

End Sub

Termina la definición de este procedimiento.

Comentarios

El código ejecutable debe estar en un procedimiento. Utilice un procedimiento Sub cuando no necesite devolver un valor al código de llamada. Utilice un procedimiento Function cuando necesite devolver un valor.

Sólo puede utilizar Sub en el nivel de módulo. Esto significa que el contexto de declaración de un procedimiento Sub tiene que ser una clase, estructura, módulo o interfaz, y no puede ser un archivo de código fuente, espacio de nombres, procedimiento o bloque. Para obtener más información, vea Contextos de declaración y niveles de acceso predeterminados (Visual Basic).

Los procedimientos Sub tienen como valor predeterminado el acceso público. Puede ajustar sus niveles de acceso con los modificadores de acceso.

Reglas

  • Implementación. Si este procedimiento utiliza la palabra clave Implements, la clase o estructura contenedora deben tener una instrucción Implements inmediatamente después de la instrucción Class o Structure. La instrucción Implements debe incluir cada interfaz especificada en implementslist. Sin embargo, el nombre con el que una interfaz define Sub (en definedname) no tiene que ser el mismo que el nombre de este procedimiento (en name).

Comportamiento

  • Volver de un procedimiento. Cuando el procedimiento Sub vuelva al código de llamada, la ejecución continúa con la instrucción que sigue a la instrucción que lo llamó.

    Las instrucciones Exit Sub y Return provocan una salida inmediata de un procedimiento Sub. Puede aparecer cualquier número de instrucciones Exit Sub y Return en cualquier parte del procedimiento y puede combinar instrucciones Exit Sub y Return.

    En el ejemplo siguiente se muestra cómo volver de un procedimiento Sub.

    Sub mySub(ByVal q As String)
        Return
    End Sub 
    
  • Llamar a un procedimiento. Un procedimiento Sub, al igual que un procedimiento Function, es un procedimiento independiente que puede tomar parámetros y ejecutar una serie de instrucciones. Sin embargo, a diferencia de un procedimiento Function, que devuelve un valor, un procedimiento Sub no se puede utilizar en una expresión.

    Puede llamar a un procedimiento Sub con el nombre del procedimiento, seguido por la lista de argumentos entre paréntesis, en una instrucción. Si no se proporcionan argumentos, se pueden omitir los paréntesis. Sin embargo, el código es más legible si se incluyen siempre los paréntesis.

    Opcionalmente puede utilizar la instrucción Call para llamar al procedimiento Sub. De este modo se puede mejorar la legibilidad del código.

Solución de problemas

Orden de ejecución.  Visual Basic reorganiza a veces las expresiones aritméticas para aumentar la eficacia interna. Por esa razón, si la lista de argumentos incluye expresiones que llaman a otros procedimientos, no puede confiar en que se les llame en un orden determinado.

Ejemplo

En este ejemplo se utiliza la instrucción Sub para definir el nombre, parámetros y código que forman el cuerpo de un procedimiento Sub.

Sub computeArea(ByVal length As Double, ByVal width As Double)
    ' Declare local variable.
    Dim area As Double
    If length = 0 Or width = 0 Then
        ' If either argument = 0 then exit Sub immediately.
        Exit Sub
    End If
    ' Calculate area of rectangle.
    area = length * width
    ' Print area to Immediate window.
    Debug.WriteLine(area)
End Sub

Vea también

Tareas

Cómo: Usar clases genéricas (Visual Basic)

Solucionar problemas de procedimientos (Visual Basic)

Cómo: Crear un método parcial (Visual Basic)

Referencia

Implements (Instrucción)

Function (Instrucción, Visual Basic)

Lista de parámetros (Visual Basic)

Instrucción Dim (Visual Basic)

Call (Instrucción, Visual Basic)

Of (Cláusula, Visual Basic)

Conceptos

Matrices de parámetros (Visual Basic)

Métodos parciales (Visual Basic)