Como usar a instrução GoTo no VBA?

No VBA (Visual Basic for Applications), a instrução `GoTo` é usada para desviar o fluxo de execução do programa para uma linha específica marcada por um rótulo. Essa instrução pode ser útil em algumas situações, como na manipulação de erros ou quando uma lógica específica requer desvios diretos. No entanto, é importante usá-la com cuidado, pois o uso inadequado pode tornar o código difícil de ler e manter.

Aqui está um exemplo básico de como usar a instrução `GoTo` no VBA:

Sub ExemploGoTo()

    Dim numero As Integer
    numero = 10

    If numero > 5 Then
        GoTo MaiorQueCinco
    Else
        GoTo MenorOuIgualACinco
    End If

MaiorQueCinco:
    MsgBox "O número é maior que cinco."
    Exit Sub

MenorOuIgualACinco:
    MsgBox "O número é menor ou igual a cinco."
    Exit Sub

End Sub

Neste exemplo, o programa verifica se a variável `numero` é maior que 5. Se for, o fluxo é desviado para o rótulo `MaiorQueCinco`, mostrando uma mensagem apropriada. Caso contrário, ele desvia para `MenorOuIgualACinco`.

Dicas ao Usar `GoTo`:

   On Error GoTo TratarErro

   ' Código que pode gerar erro
   Dim resultado As Integer
   resultado = 10 / 0

   Exit Sub

TratarErro:
   MsgBox "Ocorreu um erro: " & Err.Description
   Resume Next
  • Evite Usar Excessivamente: O uso excessivo de `GoTo` pode tornar o código confuso. Prefira estruturas mais modernas como `If…Else`, `Select Case`, loops, e tratamentos de erro estruturados (`On Error`).
  • Rótulos Claros: Use rótulos descritivos para tornar o fluxo fácil de seguir.
  • Tratamento de Erros: Em VBA, a instrução `GoTo` é frequentemente usada para tratar erros. Por exemplo:

Neste exemplo, a instrução `On Error GoTo TratarErro` desvia para a rotina de tratamento de erro `TratarErro` em caso de erro, permitindo ao programador lidar com o problema de maneira controlada.

Sempre que possível, busque alternativas mais legíveis e mantenha o uso de `GoTo` restrito a necessidades específicas como manipulação de erros ou saídas antecipadas dentro de loops complexos que não se beneficiam de uma lógica estruturada óbvia.

Unlock Your Potential

Excel

Basic - Advanced

Access

Access Basic - Advanced

Power BI

Power BI Basic - Advanced

Help us grow the project