VBA Return - ¿Cómo usar la declaración de devolución de GoSub en VBA?

Declaración de devolución de Excel VBA

VBA es maravilloso y un salvavidas para aquellos que conocen la entrada y salida de la codificación VBA. Puede ahorrar toneladas de tiempo en nuestro lugar de trabajo. En nuestros artículos anteriores, hemos discutido muchas cosas y conceptos del retorno de VBA. Uno de esos conceptos es la declaración GoSub Return. En este artículo, le presentaremos estos conceptos.

¿Qué es la declaración de devolución de GoSub?

La declaración "Go Sub" significa que irá a la línea de código indicada por la etiqueta hasta el nombre y realizará un conjunto específico de la tarea hasta que encuentre la declaración "Return".

Esto es similar a la declaración del controlador de errores "GoTo Label", pero lo que hace "GoSub Return" es volver a la siguiente línea de código en lugar de continuar desde el nombre de la etiqueta.

A continuación se muestra la sintaxis de la declaración VBA GoSub Return.

GoSub (Nombre de etiqueta)  … Línea de código  (Nombre de etiqueta):  … Línea de código para realizar la tarea

Sé que es difícil de entender leyendo la sintaxis, pero usando el ejemplo, es posible que pueda comprender el concepto.

Antes de ir a los ejemplos, permítame contarle algunas cosas sobre esta declaración.

  • La instrucción GoSub llama a la subrutina en VBA, que recibe el nombre de una etiqueta dentro de la misma rutina o función.
  • Tanto GoSub como Return deben estar dentro del mismo procedimiento. No podemos llamar a otra macro de subrutina aquí.
  • Puede introducir cualquier número de declaraciones de devolución de GoSub.
  • Una declaración de retorno continuará la ejecución del código desde donde lo dejó antes de saltar al subprocedimiento indicado por un nombre de etiqueta.

¿Cómo usar la declaración de devolución de GoSub en VBA?

Ejemplo 1

Para comprender el uso de esta declaración, consulte primero el código siguiente. Más adelante te explicaré el código línea por línea.

Código:

Sub Go_Sub_Return () GoSub Macro1 'Nombre de etiqueta1 Macro de GoSub2' Nombre de etiqueta2 Macro de GoSub3 'Nombre de etiqueta3 Salir de Sub Macro1: MsgBox "Ahora ejecutando Macro1" Devolver Macro2: MsgBox "Ahora ejecutando Macro2" Devolver Macro3: MsgBox "Ahora ejecutando Macro3" Volver Fin Sub

Para entender este código, ejecutemos el código línea por línea presionando la tecla F8. Al presionar la tecla F8 por primera vez, iniciará la ejecución de la macro.

Ahora presione la tecla F8 una vez más para ir a la siguiente línea.

Todos sabemos que la macro ejecutará el código línea por línea, pero si presiona la tecla F8, no pasará a la siguiente línea; más bien, funciona de manera diferente.

Ha saltado a la etiqueta denominada "Macro1", esto se debe a que en la declaración anterior "GoSub", le hemos indicado a la macro que vaya al nombre de la etiqueta del subprocedimiento "Macro1", por lo que, en consecuencia, ha saltado al nombre de la etiqueta respectiva.

Ahora, al presionar la tecla F8, la macro de Excel ejecutará la tarea de la etiqueta "Macro1" de mostrar el resultado en el cuadro de mensaje.

Haga clic en Aceptar en el cuadro de mensaje para volver a la ventana de codificación.

Ahora había resaltado la declaración "Retorno". Si presiona la tecla F8 una vez más, lo que hará es "Regresar" a la línea anterior de código antes de saltar al nombre de la etiqueta.

La última vez ejecutó el código "GoSub Macro1" y realizó la tarea de nombre de etiqueta "Macro1". Dado que hemos mencionado la declaración "Retorno", se vuelve a la siguiente línea de código, es decir

"GoSub Macro2"

Lo que dice la declaración es, "etiqueta de referencia llamada Macro2". A continuación, para la etiqueta "Macro2", he mencionado un conjunto específico de tareas.

Ahora obtendremos la segunda tarea de subprocedimiento de mostrar valor en el cuadro de mensaje.

Ahora haz clic en Ok. Destacará la segunda declaración de "Retorno".

Ahora, al hacer clic en la tecla F8, volverá a la siguiente línea de código antes de volver a la etiqueta "Macro2". Ahora resaltará “GoSub Macro3”.

Ahora irá a la etiqueta “Macro3”, presione la tecla F8.

Ahora se ejecutará la tercera tarea de etiqueta.

Ahora haga clic en Aceptar. Destacará la declaración "Devolución".

Ahora presione la tecla F8 una vez más; volverá a la línea de código "Exit Sub".

No, it will exit the subroutine. It is necessary to add the word “Exit Sub” otherwise, and it will encounter an error.

Example #2

Now take a look at one more example of using the GoSub Return statement.

Code:

Sub Go_Sub_Return1() Dim Num As Long Num = Application.InputBox (Prompt:="Please enter the number here", Title:="Divsion Number") If Num> 10 Then GoSub Division Else MsgBox "Number is less than 10" Exit Sub End If Exit Sub Division: MsgBox Num / 5 Return End Sub

This code will ask you to enter the number which is>10. If the number is>10, then it will perform the task of dividing it by 5 (Label Name is “Division”), or else it will show the message as “Number is less than 10”.

Things to Remember

  • El nombre de la etiqueta debe ser el mismo en GoSub y la declaración de devolución, y en la declaración de devolución, el nombre de la etiqueta debe ir seguido de dos puntos (:).
  • Utilice siempre Exit Sub en VBA después de realizar todas las declaraciones de devolución para evitar el mensaje de error.

Articulos interesantes...