VBA – GoTo – Ir a una etiqueta de línea
In this Article
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
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