VBA – GoTo – Ir a una etiqueta de línea

Written by

Editorial Team

Reviewed by

Steve Rynearson

Translated by

Dennis Madrid

Last updated on marzo 11, 2022

La sentencia GoTo en VBA le permite saltar a una línea de código. Primero cree una etiqueta de línea en cualquier parte de su código:

Saltar:

A continuación, añada la sentencia «GoTo» para saltar a la etiqueta de línea

GoTo Saltar

Ejemplos de GoTo

Este ejemplo comprueba el año. Si el año es 2019 o posterior irá a la etiqueta de línea Skip. Esto le permite saltar el código si se cumplen ciertas condiciones.

Sub Ejemplo_GoTo()

    Dim year As Integer
    year = 2019

    If year >= 2019 Then GoTo Skip
    
    'Procesar los datos de los años < 2019
     MsgBox "El año es anterior a 2019"

Skip:
End Sub

Ir a varias etiquetas de línea

También puede utilizar las sentencias GoTo para saltar a las líneas de código relevantes. Vamos a ajustar nuestro ejemplo anterior para ir a diferentes ubicaciones de código en función del año que sea:

Sub GoTo_Sentencia()
    Dim year As Integer
    año = 2019

    If año = 2019 Then
        GoTo año2019
    ElseIf year = 2010 Then
        GoTo año2020
    Else
        GoTo año2021
    End If
    
año2019:
    'Procesar 2019
    MsgBox "El año es 2019"

GoTo EndProc
año2020:
    'Procesar 2020
    MsgBox "El año es 2020"

GoTo EndProc
año2021:
    'Procesar 2021+
    MsgBox "El año es 2021+"

EndProc:
End Sub

Observe el «GoTo EndProc» antes de cada etiqueta de línea. Añadimos esta línea de código para que esas secciones de código sean omitidas a menos que sean accedidas por el «GoTo» correspondiente.

GoTo Manejador de Errores Fin de Procedimiento

Ahora usemos el Manejador de Errores para ir al final del procedimiento si hay un error.

Sub GoTo_OnError()
Dim i As Integer

On Error GoTo EndProc


    i = 5 / 0
    MsgBox i


EndProc:
End Sub

GoTo – Repetir código

Nuestro último ejemplo utilizará la sentencia GoTo para repetir algún código. A continuación estamos utilizando un cuadro de mensaje Sí / No(Haga clic para saber más) para confirmar que el usuario reconoce la advertencia. Si hacen clic en ‘No’, el cuadro de mensaje se mostrará de nuevo hasta que hagan clic en ‘Sí’ (ver GIF abajo).

Sub GoTo_YesNoMsgBox()

RepeatMsg:
    Dim answer As Integer
    
    answer = MsgBox("ADVERTENCIA: Este archivo se abrió como un archivo de sólo lectura, lo que significa que cualquier cambio " _
    + "que usted haga no se guardará a menos que / hasta que tenga derechos de acceso de escritura. " & _
    Chr(13) & Chr(13) & "Seleccione Archivo, GuardarComo para guardar una copia antes de trabajar en este archivo" _
    & vbNewLine & vbNewLine & "¿Entiende?", vbExclamation + vbYesNo, "¡Advertencia!")
    
    If answer = vbNo Then GoTo RepeatMsg 'Repite hasta que el usuario haga clic en "Sí"

End Sub

YesNo

 

VBA Ir a una etiqueta de línea en Access VBA

Todos los ejemplos anteriores funcionan exactamente igual en Access VBA que en Excel VBA.

Sub Prueba_GoTo()
   On Error GoTo fin
   DoCmd.OpenForm "FrmClients"
   Exit Sub
   fin:
   MsgBox "No puede abrir el formulario"
End Sub
vba-free-addin

Complemento de Ejemplos de Código de VBA

Acceda fácilmente a todos los ejemplos de código que se encuentran en nuestro sitio.

Simplemente navegue al menú, haga clic y el código se insertará directamente en su módulo. Complemento .xlam.

(¡No se requiere instalación!)

Descarga gratuita

Return to VBA Code Examples