La declaración GoTo en VBA le permite saltar a una línea de código.
Primero cree una etiqueta de línea en cualquier lugar de su código:
1 | Saltar: |
Luego, agregue a la declaración "Ir a" para saltar a la etiqueta de la línea
1 | Ir a Saltar |
Ejemplos de GoTo
Este ejemplo prueba el año. Si el año es 2022 o posterior, irá a la etiqueta Omitir línea. Esto le permite omitir el código si se cumplen ciertas condiciones.
123456789101112 | Sub GoTo_Example ()Dim year As Integeraño = 2019Si año> = 2019, vaya a Saltar'Datos de proceso para años <2022MsgBox "El año es anterior a 2022"Saltar:End Sub |
Ir a etiquetas de varias líneas
También puede usar instrucciones GoTo para saltar a líneas de código relevantes. Ajustemos nuestro ejemplo anterior para ir a diferentes ubicaciones de código según el año:
1234567891011121314151617181920212223242526272829303132 | Sub GoTo_Statement ()Dim year As Integeraño = 2019Si año = 2019 EntoncesIr al año 2019ElseIf año = 2010 EntoncesIr al año 2020DemásIr al año2021Terminara siaño2019:'Proceso 2022MsgBox "El año es 2022"GoTo EndProcaño2020:'Proceso 2022MsgBox "El año es 2022"GoTo EndProcaño2021:'Proceso 2022+MsgBox "El año es 2022+"EndProc:End Sub |
Observe el "GoTo EndProc" antes de cada etiqueta de línea. Agregamos esta línea de código para que esas secciones de código se omitan a menos que se acceda a ellas mediante el "Ir a" correspondiente.
GoTo Error Handler Fin del procedimiento
Ahora usemos Manejo de errores para ir al final del procedimiento si hay un error.
123456789101112 | Sub GoTo_OnError ()Dim i como enteroEn caso de error, GoTo EndProci = 5/0MsgBox iEndProc:End Sub |
Ir a repetir código
Nuestro último ejemplo usará la instrucción GoTo para repetir algún código.
A continuación, usamos un cuadro de mensaje Sí / No (haga clic para obtener más información) 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 a continuación).
1234567891011 | Sub GoTo_YesNoMsgBox ()RepeatMsg:Respuesta tenue como enteroanswer = MsgBox ("ADVERTENCIA: Este archivo se abrió como un archivo de solo lectura, lo que significa que los cambios que realice no se guardarán a menos que tenga derechos de acceso de escritura". & _Chr (13) & Chr (13) & "Seleccione Archivo, Guardar como para guardar una copia antes de trabajar en este archivo". & vbNewLine & vbNewLine & "¿Entiende?", vbExclamation + vbYesNo, "¡ADVERTENCIA!")Si answer = vbNo, vaya a RepeatMsg 'Repita 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.
1234567 | SubpruebaGoTo ()En caso de error, ir al finalDoCmd.OpenForm "FrmClients"Salir de Subfinalizando:MsgBox "No se puede abrir el formulario"End Sub |