Como usar a instrução GoSub…Return em VBA?

A instrução `GoSub…Return` é uma estrutura de controle em VBA (Visual Basic for Applications) que é usada para direcionar o fluxo de execução de um programa para uma sub-rotina dentro do mesmo procedimento. No entanto, é importante notar que o uso de `GoSub…Return` é bastante limitado e considerado obsoleto, especialmente porque o VBA possui estruturas de controle mais robustas, como `Sub`, `Function`, e `Call`.

Porém, se você estiver interessado em entender como `GoSub…Return` funciona, aqui está uma explicação básica:

Estrutura de `GoSub…Return`

  • GoSub: Redireciona o fluxo de execução para um rótulo específico dentro do procedimento atual.
  • Return: Indica o ponto para onde o fluxo de execução deve retornar após a sub-rotina ser concluída.

Exemplo de Uso

Sub ExemploGoSubReturn()
    Dim resposta As Integer
    Dim valor As Integer
    
    valor = 5
    
    ' Chama a rotulação MultiplicaPorDois
    GoSub MultiplicaPorDois
    
    MsgBox "O resultado é " & resposta
    Exit Sub

MultiplicaPorDois:
    ' Multiplica o valor por 2
    resposta = valor * 2
    ' Retorna ao próximo ponto após a chamada GoSub
    Return
End Sub

Explicação:

  • GoSub MultiplicaPorDois: Quando esta instrução é executada, o fluxo de controle salta para o rótulo `MultiplicaPorDois`.
  • Return: Após executar o código sob o `MultiplicaPorDois`, a instrução `Return` redireciona o fluxo de volta para a linha seguinte da instrução `GoSub MultiplicaPorDois`.

Considerações:

  • Legibilidade e Manutenção: O uso de `GoSub…Return` pode tornar o código menos legível e mais difícil de manter.
  • Substituição Recomendada: Considere usar procedimentos (subs e funções) para encapsular lógica reutilizável de uma maneira mais clara e sustentável.
  • Obsolescência: O uso desta instrução é rarissimo e geralmente substituída por melhores práticas de programação que resultam em código mais organizado e menos propenso a erros.

Usar `Sub` ou `Function` torna o código mais modular e mantenível. Aqui está como você pode reescrever o exemplo acima usando `Sub`:

Sub ExemploSub()
    Dim resultado As Integer
    resultado = MultiplicaPorDois(5)
    MsgBox "O resultado é " & resultado
End Sub

Function MultiplicaPorDois(valor As Integer) As Integer
    MultiplicaPorDois = valor * 2
End Function

Nesse novo exemplo, o uso de uma função separada para a lógica de multiplicação torna o programa mais claro e estruturado.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project