Retorno de VBA - Como usar a declaração de retorno GoSub no VBA?

Declaração de retorno VBA do Excel

O VBA é maravilhoso e um salva-vidas para aqueles que conhecem a codificação VBA dentro e fora dela. Isso pode economizar muito tempo em nosso local de trabalho. Em nossos artigos anteriores, discutimos muitas coisas e conceitos de retorno de VBA. Um desses conceitos é a declaração GoSub Return. Neste artigo, apresentaremos esses conceitos.

O que é declaração de retorno GoSub?

A declaração “Go Sub” significa que irá para a linha de código indicada pelo rótulo através do nome e executa um conjunto específico da tarefa até encontrar a declaração “Return”.

Isso é semelhante à instrução do manipulador de erros “GoTo Label”, mas o que “GoSub Return” faz é retornar para a próxima linha de código em vez de continuar a partir do nome do rótulo.

Abaixo está a sintaxe da instrução VBA GoSub Return.

GoSub (Label Name)  … Linha de Código  (Label Name):  … Linha de Código para executar a tarefa

Eu sei que é difícil de entender lendo a sintaxe, mas usando o exemplo, você pode ser capaz de entender o conceito.

Antes de ir para os exemplos, deixe-me dizer algumas coisas sobre esta declaração.

  • A instrução GoSub chama a sub-rotina em VBA, que é nomeada por um rótulo na mesma rotina ou função.
  • GoSub e Return devem seguir o mesmo procedimento. Não podemos chamar outra macro de sub-rotina aqui.
  • Você pode introduzir qualquer número de declarações GoSub Return.
  • Uma instrução de retorno continuará a execução do código de onde parou antes de pular para o subprocedimento indicado por um nome de rótulo.

Como usar a declaração de retorno GoSub no VBA?

Exemplo 1

Para entender o uso dessa instrução, observe primeiro o código abaixo. Posteriormente, explicarei a você o código linha por linha.

Código:

Sub Go_Sub_Return () GoSub Macro1 'Label Name1 GoSub Macro2' Label Name2 GoSub Macro3 'Label Name3 Sair Sub Macro1: MsgBox "Now running Macro1" Return Macro2: MsgBox "Now running Macro2" Return Macro3: MsgBox "Now running Macro3" Return End Sub

Para entender esse código, vamos executá-lo linha por linha pressionando a tecla F8. Ao pressionar a tecla F8 pela primeira vez, ele iniciará a execução da macro.

Agora pressione a tecla F8 mais uma vez para ir para a próxima linha.

Todos nós sabemos que a macro executará o código linha por linha, mas se você pressionar a tecla F8, ela não irá para a próxima linha; em vez disso, funciona de maneira diferente.

Ela saltou para o rótulo denominado "Macro1" porque na declaração anterior "GoSub" instruímos a macro a ir para o nome do rótulo do subprocedimento "Macro1", portanto, de acordo, saltou para o respectivo nome do rótulo.

Agora, pressionando a tecla F8, a macro do excel executará a tarefa rótulo “Macro1” de mostrar o resultado na caixa de mensagem.

Clique no OK da caixa de mensagem para retornar à janela de codificação.

Agora havia destacado a declaração “Retorno”. Se você pressionar a tecla F8 mais uma vez, o que ele fará é “Retornar” à linha anterior do código antes de pular para o nome do rótulo.

Da última vez, executou o código “GoSub Macro1” e executou a tarefa de nome de rótulo “Macro1”. Uma vez que mencionamos a declaração "Return", ele está de volta à próxima linha de código, ou seja,

“GoSub Macro2”

O que essa declaração diz é “etiqueta go-to chamada Macro2”. Abaixo, para o rótulo “Macro2”, mencionei um conjunto específico de tarefas.

Agora obteremos a segunda tarefa do subprocedimento de mostrar o valor na caixa de mensagem.

Agora clique em Ok. Ele irá destacar a segunda declaração “Retorno”.

Agora, ao clicar na tecla F8, ele retornará para a próxima linha de código antes de retornar ao rótulo “Macro2”. Agora ele destacará “GoSub Macro3”.

Agora irá para o rótulo “Macro3”, pressione a tecla F8.

Agora, a terceira tarefa de rótulo será executada.

Agora clique em OK. Ele destacará a declaração “Retorno”.

Agora pressione a tecla F8 mais uma vez; ele voltará para a linha de código “Exit Sub”.

Não, ele sairá da sub-rotina. Caso contrário, é necessário adicionar a palavra “Exit Sub” e ocorrerá um erro.

Exemplo # 2

Agora dê uma olhada em mais um exemplo de uso da instrução GoSub Return.

Código:

Sub Go_Sub_Return1 () Dim Num As Long Num = Application.InputBox (Prompt: = "Por favor, digite o número aqui", Title: = "Número da divisão") If Num> 10 Then GoSub Division Else MsgBox "O número é menor que 10" Sair Sub End If Exit Sub Division: MsgBox Num / 5 Return End Sub

Este código solicitará que você insira o número> 10. Se o número for> 10, então realizará a tarefa de dividi-lo por 5 (Label Name é “Divisão”), ou então mostrará a mensagem como “Number is less than 10”.

Coisas para lembrar

  • O nome do rótulo deve ser o mesmo na instrução GoSub e Return e, na instrução return, o nome do rótulo deve ser seguido por dois pontos (:).
  • Sempre use Exit Sub no VBA depois que todas as instruções de retorno forem feitas para evitar a mensagem de erro.

Artigos interessantes...